当前位置:   article > 正文

代码随想录算法训练营第一天|704.二分查找 27.移除元素_代码随想录算法训练营第一天|leetcode 704.二分查找、27移除元素

代码随想录算法训练营第一天|leetcode 704.二分查找、27移除元素

目录

LeetCode 704.二分查找

题目链接:704. 二分查找 - 力扣(LeetCode)

代码实现:

总结:

LeetCode 27.移除元素

遇到的问题:

代码实现:

总结:


LeetCode 704.二分查找

题目链接:704. 二分查找 - 力扣(LeetCode)

解题思路:对于一个有序数组来讲,可以利用二分查找来查找数组中某一个元素,此方法又可以分为两个具体的思路(左闭右闭和左闭右开)。

遇到的问题:Java中的浮点数溢出问题以及对位运算不太熟悉。

代码实现:

左闭右闭:

  1. class Solution {
  2. public int search(int[] nums, int target) {
  3. //首先要确定target是在数组nums的大小范围中,否则查找将失去意义
  4. if(target<nums[0]||target>nums[nums.length-1])
  5. return -1;
  6. int left = 0;
  7. int right = nums.length-1;
  8. while(right>=left)
  9. {
  10. int mid = left+((right-left)>>1);
  11. if(nums[mid]>target){
  12. right = mid-1;
  13. }else if(nums[mid]<target){
  14. left = mid+1;
  15. }else if(nums[mid]==target)
  16. return mid;
  17. }
  18. return -1;
  19. }
  20. }

左闭右开:

  1. class Solution {
  2. public int search(int[] nums, int target) {
  3. //首先要确定target是在数组nums的大小范围中,否则查找将失去意义
  4. if(target<nums[0]||target>nums[nums.length-1])
  5. return -1;
  6. int left = 0;
  7. int right = nums.length;
  8. while(right>left)
  9. {
  10. int mid = left+((right-left)>>1);
  11. if(nums[mid]>target){
  12. right = mid;
  13. }else if(nums[mid]<target){
  14. left = mid+1;
  15. }else if(nums[mid]==target)
  16. return mid;
  17. }
  18. return -1;
  19. }
  20. }

总结:

要熟悉的掌握这两种方法,两种方法中mid的选取是不同的。

LeetCode 27.移除元素

题目链接:27. 移除元素 - 力扣(LeetCode)

遇到的问题:

对于双指针的操作不够熟练。

代码实现:

  1. class Solution {
  2. public int removeElement(int[] nums, int val) {
  3. int left = 0;
  4. int right = nums.length-1;
  5. while(right >= 0 && nums[right] == val)
  6. right--;
  7. while(left <= right)
  8. {
  9. if(nums[left] == val)
  10. {
  11. nums[left] = nums[right];
  12. right--;
  13. }
  14. left++;
  15. while(right >= 0 && nums[right] == val)
  16. right--;
  17. }
  18. return left;
  19. }
  20. }

总结:

慢指针指向新数组的元素,一次循环后需要右移一位以便接收下次循环快指针找到的元素,当快指针遍历完nums,快指针的下标实际上就是新数组的长度。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号