LeetCode 704 二分查找 27 移除元素 | 代码随想录25期训练营day1

数组

LeetCode 704 二分查找 2023.10.25

  • LeetCode 704 二分查找[题目链接]
  • 代码随想录讲解[链接]
    在这里插入图片描述
  • 提供无重复递增或递减排序,用于搜索某一条件值
  • 方法:二分查找将有序数组查找范围每次压缩一半,变动两端index
  • 关键:把所有元素都考虑在内!不要漏!(左闭右闭、左闭右开)
  • 扩展:也可用于除法求平方根
  int search(vector<int>& nums, int target) {
     int end = nums.size();
     for (int i = 0; i < end; ) //左闭右开
     {
         int mid = i + (end - i)/2;
         if(nums[i] == target)
         {
             return i;
         }
         if(nums[mid] == target)
             return mid;
         else if(nums[mid] < target)
         {
             i = ++mid;
         }
         else //nums[mid] > target
         {
             end = mid;
             i++;
         }
     }
     return -1;
 }
  • 时间复杂度O(log n);空间复杂度O(1)

LeetCode 27 移除元素 2023.10.25

  int removeElement(vector<int>& nums, int val) {
	  int size = nums.size();
	   int sym = 0;
	   sort(nums.begin(), nums.end());//本题中要求可以变换顺序
	//以下做法是第一次自己所做时所想,时间复杂度为O(2n)=O(n)
	   for (int i = 0; i < size; i++)
	   {
	       if (nums[i] == val)
	       {
	           sym ++;
	       }
	       else if (nums[i] != val && sym != 0)
	       {
	           for (int j = 0; j < size-i; j++)
	           {
	               //if(i+j < size)
	               nums[i - sym + j] = nums[i+j];
	           }
	           return size - sym;
	       }
	   }
	   return size - sym;
	}
  • 时间复杂度O(n) 空间复杂度O(1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值