• 代码随想录算法训练营第1天|二分查找|移除元素


    代码随想录算法训练营第1天|二分查找|移除元素

    1. 704 二分查找

    题目链接:https://leetcode.cn/problems/binary-search/
    文章讲解:https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html
    视频讲解:https://www.bilibili.com/video/BV1fA4y1o715

    int search(int* nums, int numsSize, int target) {
        
        int left,right,mid;
        left=0;
    /*    right=numsSize-1;
    
        while(left<=right)
        {
            mid=(left+right)/2;
            if(nums[mid]target)
            right=mid-1;
            else return mid;
        }上面是[]的程序,下面[)
    */
        right=numsSize;
        while(left<right)
        {
            mid=(left+right)/2;
            if(nums[mid]<target)
            left=mid+1;
            else if (nums[mid]>target)
            right=mid;
            else return mid;
        }
    
        return -1;
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    总结
    二分法中最重要的是对区间合法的判断(前提是你是有序数组才可进行二分),
    eg:二分法也就是你回家买了一颗长的萝卜,你放那好几天,然后萝卜有地方坏了。由于萝卜太长了你首先对半切,然后找到坏的一半继续对半切,直到把坏的部分给切出来扔掉。在这之间你不要把人家给切的范围给搞错力。
    你可以通过[1,1]和[1,1)的方法来举例说明合法性 ,以保证自己代码的后续不会写错。

    1. 27 移除元素

    题目链接:https://leetcode.cn/problems/remove-element/
    文章讲解:https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html
    视频讲解:https://www.bilibili.com/video/BV12A4y1Z7LP

    int removeElement(int* nums, int numsSize, int val) {
        
       
        int front,slow,k;
        front=0;
        slow=0;
        k=0;
        //双指针算法
    for(front;front<numsSize;front++)
        if(nums[front]!=val)
        nums[slow++]=nums[front];
    /* 
        //暴力
        slow=numsSize;
        for(int i=0;i       
        return slow;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    总结
    在移除元素,也就是删除数组中选定的元素,有2种方法,(1)双指针(2)暴力
    ,(1)里面双指针就是非特定的就保持不变特定就覆盖,eg:相当于哥们在菜市场挑苹果,你这有A,B两箱子,A中是原有箱子,B是空箱子,你现在要挑好苹果,你在A里看见一个好苹果就往B箱子里面扔,看见坏的就不扔,到最后B箱子里面就都是好苹果,然后你就说我箱子里面都是好苹果(把A取代了)。(2)暴力就是你也去挑苹果,你是按顺序把坏苹果给挑出来,坏苹果的位置被后续苹果给顶替。也就这意思。

    ps:新手第一回在csdn写博客,大佬们多多见谅(有没有大佬带我做人工智能的项目啊,小白想尝试一下学习人工智能,但是不知道咋学,请大佬带带)

  • 相关阅读:
    课堂笔记| 第九章:容器和迭代器
    日常 - UX 响应 Nginx 502 Bad Gateway
    leetcode-518. 零钱兑换 II
    小样本学习--(1)概论
    注解实现接口幂等性
    羧基修饰的聚苯乙烯微球(红色、橙色、绿色)的产品简介
    Kibana8.4在Linux系统上的安装(ELK安装part3)
    python学习笔记(集合)
    Java面试题13-CountDownLatch和Semaphore的区别和底层原理
    HTTP和HTTPS
  • 原文地址:https://blog.csdn.net/2401_83080774/article/details/136219851