当前位置: 首页 > news >正文

【每日likou】704. 二分查找 27. 移除元素 977.有序数组的平方

  1. 二分查找
    这是一道一看就会,一做就废的题目。
    本题关键:确定target属于左闭右闭区间,还是左闭右开区间。
    思路:
    (1)假设target在左闭右闭区间
    循环条件应该为 left <= right,如果不写等于号,就排查不到num[left]=num[right]=target的情况。
    确定好区间后,right = mid -1.
    (2)假设target在左闭右开区间
    循环条件应该为 left < right,我们定义的是target在[left, right),如果left = right 时,不符合定义了
    确定好区间后,right = mid.
class Solution {public int search(int[] nums, int target) {int left = 0;int right = nums.length - 1;int centerIndex;while(left <= right){centerIndex = (right + left) / 2;if(nums[centerIndex] == target){return centerIndex;}else if(nums[centerIndex] > target){right = centerIndex - 1;}else{left = centerIndex + 1;}}return -1;}
}
  1. 移除元素
class Solution {public int removeElement(int[] nums, int val) {int i = 0;int j = nums.length - 1;while(i <= j){    if(nums[i] != val){i++;}else if(nums[i] == val && nums[j] != val){nums[i] = nums[j];i++; j--;}else if(nums[i] == val && nums[j] == val){j--;}}return i;}
}

977.有序数组的平方
本题关键;
平方最大的数要么在数组的第一个位置,要么在数组的最后一个位置。由此想到双指针法。

class Solution {public int[] sortedSquares(int[] nums) {int[] res = new int[nums.length];int left = 0;int right = nums.length - 1;int cur = nums.length - 1;while(left <= right){if(Math.abs(nums[left])  <= Math.abs(nums[right])){res[cur--] = nums[right] * nums[right];right--;}else if(Math.abs(nums[left])  > Math.abs(nums[right])){res[cur--] = nums[left] * nums[left];left++;}}return res;}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/243941.html

相关文章:

  • docker-compose搭建eureka-server和zipkin
  • asio之静态互斥量
  • ubuntu22 arm 编译安装input leap
  • 20250611让NanoPi NEO core开发板在Ubuntu core16.04系统下开机自启动的时候拉高GPIOG8
  • NumPy 2.x 完全指南【二十五】记录数组
  • 建站新手:我与SiteServerCMS的爱恨情仇(三)
  • 【c++八股文】Day2:虚函数表和虚函数表指针
  • RPC启动机制及注解实现
  • day 50
  • 0:0 error Parsing error: Cannot read properties of undefined (reading ‘map‘)
  • Rust 学习笔记:通过异步实现并发
  • C语言学习20250611
  • 亮数据抓取浏览器,亚马逊数据采集实战
  • Flask 报错修复实战:send_file() got an unexpected keyword argument ‘etag‘
  • vite原理
  • MFC 第1章:适配 WIndows 编程的软件界面调整
  • 创建和运行线程
  • 训练过程中的 Loss ?
  • 红队手法:从web漏洞到ssh横向移动 实战方案
  • 达梦数据库dsc集群+异步主备
  • Android11三网共存
  • el-table-v2修改表头、单元格、表格整体的宽度、高度样式
  • 用 IRify 深入探索 WebShell 中的 Source/Sink 挖掘
  • C# ConcurrentDictionary 中获取指定范围的元素
  • 解密Spring Boot:深入理解条件装配与条件注解
  • 教师端用户操作手册
  • 使用 C/C++、OpenCV 和 Libevent 构建联网人脸识别考勤系统 [特殊字符]‍[特殊字符]
  • docker和docker-compose的版本对应关系怎么看?
  • 顶顶通电话机器人功能列表
  • Spring Security是如何完成身份认证的?