首页 > 其他分享 >代码随想录第一天|704.二分查找、27.移除元素

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

时间:2023-08-23 22:45:30浏览次数:45  
标签:27 nums int 代码 元素 随想录 length 移除

二分查找

  对数组的要求有两点:

  • 有序
  • 无重复元素,若有重复元素则返回的元素下标不唯一
边界条件是

while(left<=right)
代码其实是很好理解的

点击查看代码
class Solution {
public:
    int search(vector<int>& nums, int target) {
        int length = nums.size();
        int left = 0;
        int right = length-1;
        int mid;
        while(left<=right){
            mid = (left +right)/2;
            if(nums[mid]==target)
                return mid;
            else if(target<nums[mid]){
                right = mid - 1;
            }else{
                left = mid +1;
            }
            
        }
        return -1;
    }
};

移除元素

这道题我的思路是暴力解法

  1. 先循环一遍,找到目标值的数量
  2. 从头开始再次循环,找到目标值后,进入二层循环,第二层循环从后往前,找到不是目标值的第一个值,两数交换
  3. 最后返回更新的数组长度
点击查看代码
class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int count=0;
        int length = nums.size();
        for(int m=0;m<length;m++){
            if(nums[m]==val){
                count++;
            }
        }
        for(int i=0;i<length-1;i++){
            if(nums[i]==val){
                for(int j=length-1;j>i;j--){
                    if(nums[j]==val)
                        continue;
                    else{
                        nums[i]=nums[j];
                        nums[j]=val;
                        break;
                    }
                }
            }
        }
        return length-count;
    }
};
移除元素这道题虽然不是最优解,但也通过我自己的努力做出来了,后续再用双指针的方法优化一下

标签:27,nums,int,代码,元素,随想录,length,移除
From: https://www.cnblogs.com/yangboran/p/17652954.html

相关文章

  • Python移除重复元素
    第一种写法:通过set特性去重,但是不保证顺序,无序的a=["1",1,"1",2]a=list(set(a))print(a)结果:[1,2,'1']第二种写法:可以保证和原来顺序一样a=["1",1,"1",2]b=[]foriina:ifinotinb:b.append(i)print(b)结果:[&#......
  • [代码随想录]Day25-回溯算法part05
    题目:491.递增子序列思路:核心问题——同层去重,这一题不能够重新排序因此不可以用i>index&&nums[i]==nums[i-1]来去重,而是每一层开一个map来判断该数是否出现过代码:var(res[][]intpath[]int)funcfindSubsequences(nums[]int)[][]int{res=make(......
  • Python基础入门学习笔记 027 集合:在我的世界里,你就是唯一
    字典的表亲--集合(在python3中,如果用大括号括起一堆数字但没有体现映射关系,那么就会认为这堆玩意儿就是个集合)1>>>num1={}2>>>type(num1)3<class'dict'>4>>>num2={1,3,4}5>>>type(num2)6<class'set'>集合中的元素都是唯一的(集合会自动帮我们把......
  • POJ2718(穷举,贪心)
    参考地址一开始连题意都没搞懂就开始直接做,tooyoung。应该静下来用5分钟分析,bytheway,maybethetypicalusageofbrute-forceis“void”functioninsteadoffunctionwithreturnvalue.//#defineLOCAL#include<cstdio>#include<cstring>#include<string>#incl......
  • [代码随想录]Day24-回溯算法part04
    题目:93.复原IP地址思路:函数参数:参数就一个stirng,path先收集ip地址的四个部分,最后存入res中时拼接成一个string,因此path和res都是[]string类型终止条件:当path有了ip的四个部分就终止;当然只有完全的把字符串遍历了才会存入res单层逻辑:先取1-3位,判断是不是0-255内的数并且没......
  • 移除链表中的重复元素
    移除链表中的重复元素给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。示例1:输入:head=[1,2,6,3,4,5,6],val=6输出:[1,2,3,4,5]示例2:输入:head=[],val=1输出:[]示例3:输入:head=[7,7,7,7],val=7输出:[]......
  • CSP模拟27
    A.道路考虑修改后的树任意两点间距离与修改前的关系。例如,\(1\)和\(3\)原本距离为\(2\),现在距离为\(1\);\(3\)和\(4\)原本距离为\(3\),现在距离为\(2\)。我们发现,对于原树中两点间的距离\(\operatorname{dis}\),现在的距离为\(\lfloor\frac{dis+1}{2}\rfloor\)......
  • CSP模拟27
    考的有一点意外,出乎意料。[CF1060E]SergeyandSubway题目链接考场上打假了,乐。设\(dis_{i,j}\)表示\(i\)和\(j\)的树上距离。很容易发现,答案其实就是:\[\sum\lceil\frac{dis_{i,j}}{2}\rceil\]其实就是所有点对的距离,加上距离为奇数的点对的个数,最后除以二就可......
  • BGP协议---基于RFC4271标准
    [email protected],2023DescriptionBGP协议---基于RFC4271标准。RFC4271是最新的BGPv4版本的协议。虽然直接看协议是非常晦涩难懂的,而且104页的全英文,真的很难完全阅读下来,但如果理解有出入,还是看RFC最为标准了。第1、2、3章自己就可......
  • 北大ACM poj1002 487-3279
    487-3279TimeLimit:2000MS MemoryLimit:65536KTotalSubmissions:191845 Accepted:33280DescriptionBusinessesliketohavememorabletelephonenumbers.Onewaytomakeatelephonenumbermemorableistohaveitspellamemorablewordorphrase.......