leetcode算法題記錄(一)

(1)兩數之和
在這裏插入圖片描述
可以使用暴力遍歷法,即用數組中的數減去目標數,然後遍歷數組,看一下數組中有沒有符合要求的數。

class Solution {
    public int[] twoSum(int[] nums, int target) {
        for(int i=0;i<nums.length;i++)
        {
            int a=target-nums[i];
            for(int j=0;j<nums.length;j++){
                if(i!=j&&nums[j]==a)
                {
                    return new int[] {i,j};
                }
            }
        }
        throw new IllegalArgumentException("No two sum solution");
    }
}

(2)移除元素
在這裏插入圖片描述
思路,用雙指針,一個是快指針,用於遍歷數組,另一個是慢指針,用於記錄新數組的長度,當遇到數值與給定數值不相等時,就把快指針對應的數值拷貝到慢指針對應的數值上,如果相等,快指針就跳過該數,不進行拷貝,這樣最後返回的新數組即爲移除元素後的數組。

public int removeElement(int[] nums, int val) {
    int i = 0;
    for (int j = 0; j < nums.length; j++) {
        if (nums[j] != val) {
            nums[i] = nums[j];
            i++;
        }
    }
    return i;
}

(3)搜索插入位置
在這裏插入圖片描述
可以使用二分查找法,降低時間複雜度

class Solution {
    public int searchInsert(int[] nums, int target) {
        int left = 0, right = nums.length - 1;
        while(left <= right) {
            int mid = (left + right) / 2;
            if(nums[mid] == target) {
                return mid;
            } else if(nums[mid] < target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        return left;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章