(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;
}
}