首页 > 其他分享 >704. 二分查找 27. 移除元素

704. 二分查找 27. 移除元素

时间:2024-06-21 21:32:03浏览次数:20  
标签:27 nums 704 ++ 元素 ptr2 mid int 移除

704. 二分查找

题目链接:https://leetcode.cn/problems/binary-search/

 

前置条件:数值有序

 

效果:可以将 时间复杂度 优化 为 log(n)

 

思路:

target (可能 存在 的 )元素 等于 mid 位 元素 时 , 返回 当前 下标

target 元素 相对于 mid 位 元素 小 时 ,选择 左侧 区域 继续 查找

target 元素 相对于 mid 位 元素 大 时 ,选择 右侧 区域 继续 查找

 

细节 :

可以 从 3 , 2 , 1 个 /(奇数个 / 偶数个 ) 元素 的 节点 考虑 最终情况

 

代码:

 

class Solution {
public:
   int search(vector<int>& nums, int target) {

       int length ;
       int left;
       int right;
       int mid;

       length = end(nums) - begin(nums);

       left = 0;
       right = length - 1;
       mid = ( left + right ) / 2;


       while(left<=right)
      {
           if(nums[mid] == target)
          {
               return mid;

          }
           else if(target < nums[mid])
          {
               right = ( mid - 1 );
               mid = (left + right ) / 2;

          }
           else if(target > nums[mid])
          {
               left = ( mid + 1 );
               mid = (left + right ) / 2;

          }

      }

       return -1;


  }
};

 

 

 

27. 移除元素

题目链接:https://leetcode.cn/problems/remove-element/

 

对 “最新 处理 位置 ” 和 “有效 储存 最 末尾 的 位置 ” 分别 分配 一个 指针 进行 处理 / 记录

 

注意 各指针 在 xx 时刻 / 时段 所 指 的 位置

 

实际 使用 中 不建议 将 指针 初始化 为 -1 , “这样 的 处理 更 容易 产生 溢出 (是 可以 污染 其它 数据 / 搞崩 程序 服务 的 (如果 没 在 测试阶段 检测 出来 的 话 ) )”

 

注意 合理 地 使用 判断 条件 减少 访存 次数

 

注意 不要 把 剩余 的 有效 元素 数量 和 已经 删除 的 元素 的 数量 搞混

 

代码:

class Solution {
public:
   int removeElement(vector<int>& nums, int val) {



       //为 前进 方向 的 前部读取侧 分配 一个 指针 (记录 地址 ) , 为 后边 的 有效 内容 的 接受 序列 分配 一个 指针

       int length ;
       int ptr2;
       int ptr1;

       int k = 0 ;      //记录 符合 val 值 元素 的 个数  

       //注意 不要 搞 反 了 k   的 意义 , k 在 这里 表示 的 是   保留 下 的   有效 元素 数 , 而不是 “ ‘符合 条件’ 被 去除 的 数(元素) 的 数量”

       length = end(nums) - begin(nums) ;

       ptr2 = 0 ;
       ptr1 = -1 ;


       for(; ptr2 < length ; )
      {
           //cout<<"ptr2 : "<<ptr2<<"     nums[ptr2] : "<<nums[ptr2]<<endl;

           if(nums[ptr2] == val )
          {
               ptr2++;          

          }
           else if(nums[ptr2] != val)
          {
               if(ptr2 == ptr1 + 1 )
              {
                   ptr1++;
                   ptr2++;

                   k++;

              }
               else
              {
                   ptr1++;

                   nums[ptr1] = nums[ptr2];

                   ptr2++;

                   k++;

              }

               
          }


      }

       return k ;

  }
};
 

标签:27,nums,704,++,元素,ptr2,mid,int,移除
From: https://www.cnblogs.com/brinisky/p/18261355

相关文章

  • Centos7.9使用kubeadm部署K8S 1.27.6集群环境(内网通过代理部署)
    Centos7.9使用kubeadm部署K8S1.27.6集群环境(内网通过代理部署)在内网借助代理服务器,使用kubeadm部署一个k8s集群,单master+2worker节点,K8S版本为1.7.6,使用containerd作为容器运行时。1.环境信息操作系统:CentOS7.9.2009内存:8GBCPU:4网络:节点通过代理进行访问。host......
  • Centos7.9使用kubeadm部署K8S 1.27.6集群环境(内网通过代理部署)
    Centos7.9使用kubeadm部署K8S1.27.6集群环境(内网通过代理部署)在内网借助代理服务器,使用kubeadm部署一个k8s集群,单master+2worker节点,K8S版本为1.7.6,使用containerd作为容器运行时。1.环境信息操作系统:CentOS7.9.2009内存:8GBCPU:4网络:节点通过代理进行访问。ho......
  • 米尔全志T527系列加推工控板和工控机,更多工业场景DEMO
    自米尔首发基于全志T527系列核心板以来,这款基于八核CPU的高性能国产核心板得到广大客户的好评。这款产品支持Android13、Linux5.15操作系统,还将适配Ubuntu系统,满足开发者们更灵活地开发各种创新应用。米尔为满足不同的客户需求,推出基于全志T527的全系列的产品:米粉派T527、MYD-LT5......
  • 274. H 指数
    给你一个整数数组citations,其中citations[i]表示研究者的第i篇论文被引用的次数。计算并返回该研究者的h指数。根据维基百科上h指数的定义:h代表“高引用次数”,一名科研人员的h指数是指他(她)至少发表了h篇论文,并且至少有h篇论文被引用次数大于等于h。如果h......
  • AP5127 DC-DC降压恒流IC 输入12-100V 输出2.5A LED车灯方案
    产品描述AP5127是一款PWM工作模式,高效率、外围简单、内置功率管,适用于12-100V输入的高精度降压LED恒流驱动芯片。输出最大功率可达25W,最大电流2.5A。AP5127可实现全亮/半亮功能切换,通过MODE切换:全亮/半亮/循环模式。AP5127工作频率固定在140KHZ,同时内置抖频......
  • 027java jsp ssm洗衣店管理系统(源码+数据库+文档)
     项目技术:SSM+Maven等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/101G......
  • 5.27实验四 数据库的备份和恢复
    实验四 数据库的备份和恢复一、实验目的:熟悉并掌握数据库备份和恢复的原理和操作。二、实验要求:掌握存储设备的创建、使用。掌握数据库中数据的导入导出操作。掌握数据上的备份和恢复操作。掌握数据库备份策略的制定原理和具体操作。三、实验步骤:1、开始→程序→Micros......
  • 2748. 美丽下标对的数目(Rust暴力枚举)
    题目给你一个下标从0开始的整数数组nums。如果下标对i、j满足0≤i<j<nums.length,如果nums[i]的第一个数字和nums[j]的最后一个数字互质,则认为nums[i]和nums[j]是一组美丽下标对。返回nums中美丽下标对的总数目。对于两个整数x和y,如......
  • 【4月27日RPA公开课UiPath圆满结束】掌握验证码自动登录技巧,实现高效自动化
    在数字化时代,自动化已成为提高工作效率、降低成本的必备工具。而RPA(RoboticProcessAutomation,机器人流程自动化)技术正是其中的佼佼者。为了帮助更多学员掌握RPA技术,RPA学习天地于4月27日举办了一场别开生面的公开课,主题为“如何实现各种验证码的自动登录”。   本次公开......
  • (nice!!!)LeetCode 2713. 矩阵中严格递增的单元格数(动态规划、哈希表)
    2713.矩阵中严格递增的单元格数思路:1、先对数组中的元素按值从小到大处理2、对于当前的元素值,可以更新当前所在行和列的最大值。3、最后每一行或每一列的最大值即为所求值细节看注释classSolution{public:intmaxIncreasingCells(vector<vector<int>>&mat......