首页 > 其他分享 >第一天 / 704. 二分查找 / 27. 移除元素 / 977. 有序数组的平方

第一天 / 704. 二分查找 / 27. 移除元素 / 977. 有序数组的平方

时间:2025-01-08 21:21:59浏览次数:1  
标签:977 27 target nums int middle right 移除 left

704. 二分查找

  • 左闭右闭
      class Solution {
        public:
          int search(vector<int>& nums, int target) {
          int left = 0;
          int right = nums.size() - 1; // 定义target在左闭右闭的区间里,[left, right]
          while (left <= right) { // 当left==right,区间[left, right]依然有效,所以用 <=
              int middle = left + ((right - left) / 2);// 防止溢出 等同于(left + right)/2
              if (nums[middle] > target) {
                  right = middle - 1; // target 在左区间,所以[left, middle - 1]
              } else if (nums[middle] < target) {
                  left = middle + 1; // target 在右区间,所以[middle + 1, right]
              } else { // nums[middle] == target
                  return middle; // 数组中找到目标值,直接返回下标
              }
          }
          // 未找到目标值
          return -1;
      }
  };
  • 左闭右开
class Solution {
public:
    int search(vector<int>& nums, int target) {
        int left = 0;
        int right = nums.size(); // 定义target在左闭右开的区间里,即:[left, right)
        while (left < right) { // 因为left == right的时候,在[left, right)是无效的空间,所以使用 <
            int middle = left + ((right - left) >> 1);
            if (nums[middle] > target) {
                right = middle; // target 在左区间,在[left, middle)中
            } else if (nums[middle] < target) {
                left = middle + 1; // target 在右区间,在[middle + 1, right)中
            } else { // nums[middle] == target
                return middle; // 数组中找到目标值,直接返回下标
            }
        }
        // 未找到目标值
        return -1;
    }
};
//左闭右闭
public class Solution {  
    public int Search(int[] nums, int target) {
        int left = 0;
        int right = nums.Length - 1;
        while(left <= right){
            int mid = (right - left ) / 2 + left;
            if(nums[mid] == target){
                return mid;
            }
            else if(nums[mid] < target){
                left = mid+1;
            }
            else if(nums[mid] > target){
                right = mid-1;
            }
        }
        return -1;
    }
}

//左闭右开
public class Solution{
    public int Search(int[] nums, int target){
        int left = 0;
        int right = nums.Length;
        while(left < right){
            int mid = (right - left) / 2 + left;
            if(nums[mid] == target){
                return mid;
            }
            else if(nums[mid] < target){
                left = mid + 1;
            }
            else if(nums[mid] > target){
                right = mid;
            }
        }
        return -1;
    }
}

27. 移除元素

// 时间复杂度:O(n)
// 空间复杂度:O(1)
class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int slowIndex = 0;
        for (int fastIndex = 0; fastIndex < nums.size(); fastIndex++) {
            if (val != nums[fastIndex]) {
                nums[slowIndex++] = nums[fastIndex];
            }
        }
        return slowIndex;
    }
};

977. 有序数组的平方

public class Solution {
    public int[] SortedSquares(int[] nums) {
        int k = nums.Length - 1;
        int[] result = new int[nums.Length];
        for (int i = 0, j = nums.Length - 1;i <= j;){
            if (nums[i] * nums[i] < nums[j] * nums[j]) {
                result[k--] = nums[j] * nums[j];
                j--;
            } else {
                result[k--] = nums[i] * nums[i];
                i++;
            }
        }
        return result;
    }
}

标签:977,27,target,nums,int,middle,right,移除,left
From: https://www.cnblogs.com/zzzhhhzzz/p/18660475

相关文章

  • 洛谷 P2754 [CTSC1999] 家园 / 星际转移问题——题解
    #ifdefONLINE_JUDGE#else#defineQiu_Cheng#endif#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;//typedeflonglongll;constintN=2e6+5,mod=1e9+7,inf=INT_MAX;//constintmod1=469762049,mod2=998244353,mod3=1004535......
  • 电流传感器HLSR50-P KX022-1020加速度计 LM27761DSGR稳压器 MAX14752EUE SAF7755HV音
    1、HLSR50-P是一款开环霍尔效应电流传感器,主要用于电子测量直流、交流和脉冲电流,同时确保初级和次级电路之间的电隔离。HLSR50-P电流传感器规格用于测量:AC/DC传感器类型:霍尔效应,开环电流-检测:50A通道数:1输出:比率,电压灵敏度:16mV/A频率:400kHz线性度:±0.5%......
  • 代码随想录算法训练营第一天 | Leetcode 027、Leetcode 704、Leetcode 977
    Leetcode027双指针覆盖目标元素#include"iostream"#include"vector"usingnamespacestd;intremoveElement(vector<int>&nums,intval){inti=0;for(intj=0;j<nums.size();j++){if(nums[j]!=val){......
  • P11527 [THUPC2025 初赛] waht 先生的法阵
    waht先生的法阵题目链接。Problem给定数列\(a\)。需要支持\(Q\)次操作,分为以下两种。区间乘\(c\)(\(2\lec\le2.5\times10^5\))。给出\(x\),按以下方法得到答案:记答案为\(ans\),初始时为\(0\)。从\(x\)开始,每次\(ans\getsans+a_x\)后\(x\getsx+\gcd(x,a_x......
  • 代码随想录算法训练营第1天 | 数组理论基础,704. 二分查找,27. 移除元素,977.有序数组的
    1.刷题部分1.1数组基础理论原文链接:代码随想录1.1.1题目内容知识性讲解,点击链接查看原文。1.1.2初见想法是一些很基本的知识,看看有么有什么生疏的。1.1.3看录后想法原来有的语言的二维数组元素地址是可以行与行之间不连续的。1.1.4遇到的困难暂未遇到困难。1.......
  • 国产化板卡设计资料:2270-VC709E 基于FMC接口的JFM7VX690T36 PCIeX8 接口卡
    VC709E基于FMC接口的JFM7VX690T36 PCIeX8接口卡一、板卡概述    本板卡基于FPGAJFM7VX690T36芯片,支持PCIeX8、两组64bitDDR3容量8GByte,HPC的FMC连接器,板卡支持各种FMC子卡扩展。软件支持windows,Linux操作系统。  二、功能和技术指标:   四、应用领域......
  • 2024.11.27
    设置元素为可拖放首先,为了使元素可拖动,把draggable属性设置为true:<imgdraggable="true">拖动什么-ondragstart和setData()然后,规定当元素被拖动时,会发生什么。在上面的例子中,ondragstart属性调用了一个函数,drag(event),它规定了被拖动的数据。dataTransfer.setD......
  • 2024.10.27
    语义元素HTML5添加了很多语义元素如下所示:标签描述<article>定义页面独立的内容区域。<aside>定义页面的侧边栏内容。<bdi>允许您设置一段文本,使其脱离其父元素的文本方向设置。<command>定义命令按钮,比如单选按钮、复选框或按钮<details>用于描述文档或......
  • 27
    实验1熟悉常用的Linux操作和Hadoop操作1.实验目的Hadoop运行在Linux系统上,因此,需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作和Hadoop操作,为顺利开展后续其他实验奠定基础。2.实验平台(1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04);(2)Hadoop版本:3.1.3。3.......
  • FMC子卡设计方案:127-4通道 12bit 125Msps 直流耦合 AD FMC 子卡
    4通道 12bit125Msps直流耦合ADFMC子卡一、板卡概述:      FMC 高速 AD 模块 FL9627 为 4 路 125MSPS, 12 位的模拟信号转数字信号模块。 FMC 模块的 AD 转换采用了 2 片 ADI 公司的 AD9627 芯片,每个AD9627 芯片支持 2 路 AD 输入转换,所......