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

 数组理论基础  
704. 二分查找

文章讲解:代码随想录

视频讲解:手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找_哔哩哔哩_bilibili

class Solution {
    public int search(int[] nums, int target) {
        int left = 0;
        int right = nums.length - 1;
        int mid = (left+right)/2;
        while(left<=right){
            if(nums[mid]>target){
                right = mid - 1;
                mid = (right + left)/2;
            }else if(nums[mid]

 题后总结:二分查找主要是要明白当target 和 mid 指针所指的数值比较大小时出现不同的情况,left 指针和 right 指针如何变化,还有的是循环的条件我们一定注意。

 


27. 移除元素

文章讲解:代码随想录

视频讲解:数组中移除元素并不容易! | LeetCode:27. 移除元素_哔哩哔哩_bilibili

class Solution {
    public int removeElement(int[] nums, int val) {
        int left = 0;
        int right = 0;
        while(right

题后总结:移除元素的方法是定义双指针,需要注意的地方主要是双指针什么情况需要移动,以及哪个指针需要移动,什么时候需要数值覆盖。

已上面这题为例,我们定义左右两个指针,我们的循环条件是当右指针小于数值的长度;当右指针所指的值不等于target值时,我们需要做的第一步是右指针所指的数值覆盖左指针所指的数值,然后第二步时左指针加一,右指针加一;当右指针所指的指不等于target 时,我们只需要右指针加一即可,左指针不变。最后返回左指针的值。

你可能感兴趣的:(算法)