今天是开始刷题的第一天,就像背单词书又从Abandon开始了一样,但是这次一定要坚持下来。
第一天的内容是熟悉的数组,先来看第一题二分查找
704.二分查找
题目链接:https://leetcode.cn/problems/binary-search/
Tips:
这一题也没啥好说的,想清楚自己用的是左闭右开区间,然后细心写完代码就行。
注意Java里获取数组长度是直接 .length,没有括号也不是size。
我的题解:
class Solution { public int search(int[] nums, int target) { int left = 0; int right = nums.length; int middle = left + (right - left) / 2; while(left < right){ if(nums[middle] == target){ return middle; } else if(nums[middle] < target){ left = middle + 1; middle = left + (right - left) / 2; } else if(nums[middle] > target){ right = middle; middle = left + (right - left) / 2; } } return -1; } }
文章讲解:https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html
视频讲解:https://www.bilibili.com/video/BV1fA4y1o715
27.移除元素
题目链接:https://leetcode.cn/problems/remove-element/
Tips:
重点在于双指针法的使用。在双指针法当中,永远只有一个主循环,用于移动其中一个指针,另一个指针的移动要在这个主循环中顺便完成。
我的题解:
class Solution { public int removeElement(int[] nums, int val) { int pLeft = 0; int pRight = 0; while(pRight<nums.length){ if(nums[pRight]!=val){ nums[pLeft] = nums[pRight]; pLeft++; } pRight++; } return pLeft; } }
文章讲解:https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html
视频讲解:https://www.bilibili.com/video/BV12A4y1Z7LP
标签:27,middle,704,nums,int,right,https,移除,left From: https://www.cnblogs.com/GavinGYM/p/17011357.html