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

算法题——数组

704.二分查找

class Solution {public int search(int[] nums, int target) {int left=0;int right=nums.length-1;while(left<=right){int mid=(left+right)/2;if(nums[mid]==target) return mid;else if(nums[mid]>target){right=mid-1;}else{left=mid+1;}}return -1;}
}

二分查找只适用于有序数组,这里要注意循环的边界,以及每次更新边界的值

27.移除元素

 

class Solution {public int removeElement(int[] nums, int val) {int slow=0;int fast=0;for(;fast<nums.length;fast++){if(nums[fast]!=val){nums[slow++]=nums[fast];}}return slow;}
}

大部分数组的题考察的是双指针法甚至是多指针,这里采用快慢指针,快指针用于遍历整个数组,遍历过程中判断其值是否等于val,慢指针用于记录目标数组的索引(这里不要求得到新数组,所以在原数组上赋值即可)

977.有序数组的平方

class Solution {public int[] sortedSquares(int[] nums) {int[] res = new int[nums.length];int left=0;int right=nums.length-1;for(int i=res.length-1;i>=0;i--){int num1 = nums[left]*nums[left];int num2 = nums[right]*nums[right];if(num1 < num2){res[i] = num2;right--;}else{res[i] = num1;left++;}}return res;}
}

 同样是双指针法,这里的思想是碰撞指针,一个指针定义在最左边,一个指针定义在最右边,由于最大的平方数只有可能在两边产生,因此比较二者的较大值,将其赋值给结果数组,注意要从后往前赋值,这样才能保证非递减排序

http://www.lryc.cn/news/607563.html

相关文章:

  • Implement recovery based on PITR using dump file and binlog
  • Deep Height Decoupling for Precise Vision-based 3D Occupancy Prediction
  • 【JAVA面试】基础篇
  • 代码随想录算法训练营三十三天|动态规划part06
  • GenieWizard: Multimodal App Feature Discovery with LargeLanguage Models
  • 直播平台中的美白滤镜实现:美颜SDK的核心架构与性能优化指南
  • Java 22 新特性解析与代码示例
  • Corrosion2靶机攻略
  • three.js实现随机山脉波纹效果
  • 【LeetCode刷题指南】--单值二叉树,相同的树
  • RustFS:高性能文件存储与部署解决方案(MinIO替代方案)
  • session和cookie作用详解
  • Solana:解决Anchor Build编译程序报错 no method named `source_file` found for struct
  • 设计模式1:创建型模式
  • 后台管理系统权限管理:前端实现详解
  • PDFsam免费开源!PDF分割合并工具
  • unity学习——视觉小说开发(一)
  • AI应用UX设计:让技术更懂用户
  • Android Jetpack 系列(五)Room 本地数据库实战详解
  • 第一个大语言模型的微调
  • Transformer架构全解析:搭建AI的“神经网络大厦“
  • Spring之【循环引用】
  • 插件升级:Chat/Builder 合并,支持自定义 Agent、MCP、Rules
  • 小学阶段的学习机推荐:科大讯飞T30、Lumie 10学习机暑期16项AI功能升级
  • 代码随想录day52图论3
  • Effective C++ 条款15:在资源管理类中提供对原始资源的访问
  • ICML 2025 | 深度剖析时序 Transformer:为何有效,瓶颈何在?
  • qt中的手势
  • STM32学习记录--Day5
  • 操作系统-lecture4(进程的调度)