代码随想录算法训练营第一天 | 704. 二分查找,27. 移除元素
704. 二分查找
题目链接:https://leetcode.cn/problems/binary-search/
1,左闭右闭
class Solution {
public int search(int[] nums, int target) {
//左闭右闭就是left <= right, left and right 都要加1或者减1
if(target < nums[0] || target > nums[nums.length - 1]){
return -1;
}
int left = 0;
int right = nums.length -1;
while(left <= right){
int mid = left +((right - left) >> 1);
if(nums[mid] == target){
return mid;
}
else if(target < nums[mid]){
right = mid - 1;
} else {
left = left +1;
}
}
return -1;
}
}
2. 左闭右开
class Solution {
public int search(int[] nums, int target) {
//左闭右开就是left < right, left要加1,但是right不减1length 位移动的时候也不减1
if(target < nums[0] || target > nums[nums.length - 1]){
return -1;
}
int left = 0;
int right = nums.length;
while(left < right){
int mid = left +((right - left) >> 1);
if(nums[mid] == target){
return mid;
}
else if(target < nums[mid]){
right = mid;
} else {
left = left +1;
}
}
return -1;
}
}
27. 移除元素
题目链接:https://leetcode.cn/problems/remove-element/
暴力的解法:
public static int deleteNum1(int[] arr, int deleteNum) { int size = arr.length; for (int i = 0; i < size; i++) { if (arr[i] == deleteNum) { for (int j = i + 1; j < size; j++) { arr[j - 1] = arr[j]; } i--; size--; } } return size; }
双指针法:
class Solution { public int removeElement(int[] nums, int val) { //双指针一起走。如果相同就不同赋给slow,不同才赋给slow,然后slow++ int slow = 0; for (int fast = 0; fast < nums.length; fast++){ if(nums[fast] != val){ nums[slow] = nums[fast]; slow++; } } return slow; } }
977.有序数组的平方
暴力解法:循环一次,然后排序;
class Solution { public int[] sortedSquares(int[] nums) { int len = nums.length; for(int i = 0; i < len; i++){ nums[i] = nums[i] * nums[i]; } Arrays.sort(nums); return nums; } }
双指针:建一个新的数组,倒着放最大的结果。只需要遍历一次。
class Solution { public int[] sortedSquares(int[] nums) { int[] result = new int[nums.length]; int left = 0; int right = nums.length -1; int last = result.length -1; while(left <= right){ if(nums[left] * nums[left] > nums[right] * nums[right]){ result[last--] = nums[left] * nums[left]; left++; } else { result[last--] = nums[right] * nums[right]; right--; } } return result; } }
分类:
随想录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?