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

 第一题:二分查找 

public class day1_二分查找 {
    public static void main(String[] args) {
        int demo_nums[]={-1,0,3,5,9,12};
        int target=2;
        System.out.println(search(demo_nums, target));
        
    }
    public static int search(int[] nums, int target) {
        int first=0;
        int last=nums.length-1;
        int middle=(last+first)/2;
        while (first<=last) {
            middle=(last+first)/2;
            if (target==nums[middle]) {
                return middle;
            }else if (nums[middle]>target) {
                last=middle-1; 
            }else{
                first=middle+1;
            }
        }
        return -1;
    }
    
}

注意好边界问题就行,注意加一减一,没什么可说的。

第二题:移除元素 

123535

思路(双指针):双指针的方法的个人理解。首先是快慢两个指针。这个慢指针,我可以把它看成存储 有效数据的指针,快指针看成去寻找有效数据的指针,两个指针同时出发,比如我们想去除逇是3,快慢指针同时指向1,此时可以这么理解,慢指针指的是我们需要存有效元素的位置,快指针指的是带判断的是否是有效元素,此时,发现是1,是有效的,那么第一个位置的元素就确定了就是1,接着我们去填第二个位置的有效元素,此时发现是2,和第一个同理,仍然就是2,接着看第三个位置,此时快指针指的是3,我们需要排除三,所以这时候快指针就接着往后移动,发现是5,符合规定,就把这个5填入慢指针指向的这个位置,这样就确认了第三个位置要填入的合格的元素。接着快慢指针同时向后移动,同理进行判断。当快指针遍历全部元素的时候,程序结束,因为快指针把全部逇候选元素遍历完了,有效的元素我们也都已经填入, 这个时候慢指针指向的以及慢指针之前的元素就是我们想要的元素了。

代码如下:

public class day1_移除元素 {
    public static void main(String[] args) {
        int[] demon={0,1,2,2,3,0,4,2};
        int mytargett=2;
        System.out.println(removeElement(demon, mytargett));

        
    }
    public static int removeElement(int[] nums, int val){
        int low=0;
        
        //快慢指针法
        for(int fast=0;fast<nums.length;fast++){
            if (nums[fast]!=val) {
                nums[low]=nums[fast];
                low++;
            }
        }
        return low;
    }
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值