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

网站开发流行工具官方网站的资料做证据

网站开发流行工具,官方网站的资料做证据,wordpress模板仿,推荐小蚁人网站建设第一题:704. 二分查找 - 力扣(LeetCode) 解题思路 本题要求在一个升序排列且无重复元素的整型数组 中查找目标值 target,并返回其下标。若不存在则返回 -1。由于数组有序且无重复元素,二分查找 是最优解法。 二分查…

第一题:704. 二分查找 - 力扣(LeetCode)

解题思路

本题要求在一个升序排列且无重复元素的整型数组 中查找目标值 target,并返回其下标。若不存在则返回 -1。由于数组有序且无重复元素,二分查找 是最优解法。

二分查找核心思想
  1. 区间定义 :本题使用左闭右闭区间 [left, right],即初始 left = 0right = nums.length - 1
  2. 循环条件left <= right,确保所有可能区间都被覆盖(包括只剩一个元素的情况)
  3. 中间值计算 :通过 middle = (left + right) >> 1 计算中间索引(位运算优化),避免整数溢出问题(本题数据量较小无需额外处理)
  4. 区间调整
    • nums[middle] > target,说明目标在左半区间,调整 right = middle - 1
    • nums[middle] < target,说明目标在右半区间,调整 left = middle + 1
    • 若相等,直接返回 middle
代码:
class Solution {public int search(int[] nums, int target) {// 初始化左右指针,定义搜索区间 [left, right]int left = 0;int right = nums.length - 1;// 循环条件:确保所有可能区间都被覆盖(包括 left == right 的情况)while (left <= right) {// 计算中间索引,使用位运算代替除法,避免整数溢出风险(本题无需特殊处理)int middle = (left + right) >> 1;// 情况 1:中间值大于目标值,说明目标在左半区间if (nums[middle] > target) {right = middle - 1;} // 情况 2:中间值小于目标值,说明目标在右半区间else if (nums[middle] < target) {left = middle + 1;} // 情况 3:找到目标值,返回下标else {return middle;}}// 循环结束仍未找到目标值,返回 -1return -1;}
}

 第二题:27. 移除元素 - 力扣(LeetCode)

解题思路

本题要求原地 移除数组中所有等于 val 的元素,并返回新的长度 k,同时确保数组的前 k 个元素为不等于 val 的元素。题目允许元素顺序改变,且不允许使用额外空间。因此,双指针法 是最优解。

双指针法的核心思想:
  1. 快指针(fast:用于遍历数组,寻找不等于 val 的元素。
  2. 慢指针(slow:指向下一个可以放置有效元素(不等于 val)的位置。
  3. 当快指针找到不等于 val 的元素时,将其值赋给慢指针所在位置,并移动慢指针。

通过这种方式,所有不等于 val 的元素会被依次移动到数组的前 k 个位置,且时间复杂度为 O(n),空间复杂度为 O(1)。

代码:
class Solution {public int removeElement(int[] nums, int val) {int slow = 0; // 慢指针,指向下一个有效元素的位置for (int fast = 0; fast < nums.length; fast++) { // 快指针遍历数组if (nums[fast] != val) { // 找到不等于 val 的元素nums[slow] = nums[fast]; // 将有效元素移动到 slow 位置slow++; // 慢指针后移}}return slow; // 最终 slow 即为新长度 k}
}

第三题:977. 有序数组的平方 - 力扣(LeetCode)

解题思路

题目要求对一个非递减排序的整数数组 nums,返回其每个元素的平方,并保持平方后的数组也是非递减排序 的。

关键观察
  • 原数组是非递减排序 的,即 nums[0] <= nums[1] <= ... <= nums[n-1]
  • 由于负数的存在,平方后的最大值可能出现在数组的两端(例如 -410 的平方分别是 16100)。
  • 因此,平方后的最大值一定出现在数组的最左端或最右端 ,最小值则在中间。
双指针法核心思想
  1. 使用两个指针 leftright,分别指向数组的最左端 最右端
  2. 使用一个指针 index,从结果数组的末尾 开始填充(从后往前填),确保每次填入的是当前最大的平方值。
  3. 比较 nums[left]nums[right] 的平方:
    • 如果 nums[left]^2 > nums[right]^2,说明左边的平方更大,将其放入 result[index],并移动 left++
    • 否则,右边的平方更大,将其放入 result[index],并移动 right--
  4. 每次操作后,index--,直到 left > right 为止。

这种方法的时间复杂度为 O(n),空间复杂度为 O(n)(因为需要一个额外的结果数组)。

代码:
class Solution {public int[] sortedSquares(int[] nums) {// 初始化左右指针int left = 0;int right = nums.length - 1;// 创建结果数组,用于存储平方后的元素int[] result = new int[nums.length];// 结果数组的填充索引,从后往前填充int index = result.length - 1;// 双指针遍历数组while (left <= right) {// 计算左右指针对应元素的平方int leftSquare = nums[left] * nums[left];int rightSquare = nums[right] * nums[right];// 比较平方值,较大的那个放入结果数组的当前索引位置if (leftSquare > rightSquare) {result[index--] = leftSquare;left++; // 左指针右移} else {result[index--] = rightSquare;right--; // 右指针左移}}// 返回最终的平方数组return result;}
}

 

 

http://www.dtcms.com/a/408797.html

相关文章:

  • 广州营销型网站建设怎么样百度快照 直接进入网站
  • 如何寻找建设网站的公司专业做农牧应聘的网站
  • 高级网站开发免费制作的企业网站
  • 长沙网站优化掌营天下物流信息平台网站建设
  • 网站引导插件图片外链在线生成网址
  • 网站关键词排名怎么提升网站后台流程图
  • 网站制作的行业在线免费网站排名优化
  • 做网站首页应用公园制作app免费吗
  • 中铁建设集团登录网站关键词搜索优化是怎么做的
  • 可以用来做简单的网络验证的网站天津酒店网站制作
  • 轻松建立网站Wordpress查找替换插件
  • python代码案例分享,python实现代码雨,动画显示,pygame使用教程
  • 上海智能网站建设公司哪里有网站制作服务
  • 网络公司网站设计多少钱广告机信息发布系统软件
  • 工业信息化部网站备案系统小型企业网站建设报告模拟组建过程
  • 建网站选服务器wordpress页头登录
  • 深圳网站开发设计学习做网页的网站
  • 婚纱摄影网站的设计怎么创立一个自己的品牌
  • 合肥官方网站优化费用网络推广引流软件
  • 企业网站重要性蓝色商务网站模板
  • 移动端手机网站制作电商网站设计推荐亿企邦
  • openEuler2403安装Dify
  • 武昌做网站的公司网站建设竣工验收报告
  • 哪个网站做任务给东西icp备案通过了 怎么修改我的网站
  • 网站后台附件无法上传网站建设公司销售
  • 网站开发常用小图片ps做网站需注意
  • 中国建设银行有哪些招聘网站旅游网站建设要求
  • 长清网站建设价格公司网站建设怎么选择
  • 苏州无锡市住房和城乡建设局网站网页设计风格
  • 苏州高端网站建设机构网站建设先有域名然后呢