代码随想录-Day01-LetCode|704-二分查找|27-移除元素

704. 二分查找

        第一天打卡二分查找还是比较简单的,但是也有很多细节需要思考,循环开始时

        left

        left<=right

        二者有何区别为什么?

                需要思考开始查找的区间范围,闭区间,还是开区间,抑或是半开半闭,不同的开闭区间范围也就不一样,例如全闭区间,[1,1]left<=right在其区间内是有可能存在target的所以while循环开始范围就是<=。同样的闭区间也是如此

                  解法-java-左闭右开区间

class Solution {
    public int search(int[] nums, int target) {
        //左开右闭
        int l=0;
        int r=nums.length;
        while(ltarget){
                r=mid;
            }else if(nums[mid]

27. 移除元素

        给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

如何求解?
        思路一暴力计算

class Solution {
    public int removeElement(int[] nums, int val) {
        int m=nums.length;
        for(int i=0;i

                思路二:双指针

class Solution {
    public int removeElement(int[] nums, int val) {
        int size=nums.length;
        int slow=0;//慢指针
        for(int fast=0;fast

总结:

        刷题第一天,感悟就是,算法不要晚上写,思路很阻塞,尽量经理最旺盛的时候,脑洞大开收获更多,加油!

Create The Code,Change The World!                        

                                                                                                                              By   三条直线围墙

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