kinli blog

2018年12月30日 星期日

LeetCode-Search Insert Position

題目:
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Example 1:
Input: [1,3,5,6], 5
Output: 2

解說:
給定一排列過且沒重複元素的陣列跟一個目標值,回傳目標值在這個陣列插入的位置索引值。
先考慮corner case的情況,再處理一般狀況。


int searchInsert(int* nums, int numsSize, int target) {
    int inser_position=0;
    for(int i=0;i<numsSize;i++)
    {
        //目標值比第一個元素小
        if((*(nums+i)>target)&(i==0))
        {   
            inser_position=0;
            break;
        }
        
        //目標值比最後一個元素大
        if((*(nums+i)<target)&(i==(numsSize-1)))
        {   
            inser_position=numsSize;
            break;
        }
        
        if(*(nums+i)<target)
            inser_position=i;
        else if(*(nums+i)==target)
        {
            inser_position=i;
            break;
        }
        else
        {
            inser_position++;
            break;
             
        }   
    }   
    return inser_position;
}

2018年12月16日 星期日

LeetCode-Remove Element #27

題目:
Given an array nums and a value val, remove all instances of that value in-place and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
The order of elements can be changed. It doesn't matter what you leave beyond the new length.
Example 1:
Given nums = [3,2,2,3], val = 3,

Your function should return length = 2, with the first two elements of nums being 2.

It doesn't matter what you leave beyond the returned length.
解說:
給定一整數陣列nums,並移除指定的值val
修改原來的陣列並回傳新的長度


int removeElement(int* nums, int numsSize, int val) {
  
    int index=0;

    for(int i=0;i<numsSize;i++)
    { 
        if(*(nums+i)!=val)//只要依序填入非指定移除的值就可以了!
        {
           *(nums+index)=*(nums+i);
            index++;
        }
    }
    
    return index;
}