算法-3.有序数组的平方
leetcode 977 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100] 示例 2: 输入:nums = [-7,-3,2,3,11] 输出:[4,9,9,49,121] 思想双指针法最终结果从大到小对应 从两侧向中间,即最大值一定在数组左右两端 放两个指针 i,j分别于数组两端,比较 nums[i]平方与 nums[j]平方大小 较大的放于result最左侧,同时对应指针向内移动一位,直至 i=j(包含相等) 123456789101112131415161718192021class Solution { public int[] sortedSquares(int[] nums) { int i=0; int j=...
算法-2.移除元素
leetcode 27 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作: 更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。 返回 k。 思路快慢指针法设置 slow, fast两个指针,初始均为0 fast用于遍历数组 slow用于记录当前保留的元素 无效元素:fast后移,slow不移; 有效元素:放入 slow指针位置,fast、slow均后移 123456789101112class Solution { public int removeElement(int[] nums, int val) { int slow=0; for(int fast=0;fast<nums.length;++fast){ ...
算法-1.二分查找
leetcode 704 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果 target 存在返回下标,否则返回 -1。 你必须编写一个具有 O(log n) 时间复杂度的算法。 示例 1: 123输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4 示例 2: 123输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1 思路采用左闭右闭区间 [left,right] 每次移动 left, right分别设为 middle+1, middle-1,不再重复取 middle(因为已知一定不是 target) 判定条件为 while(right>=target),要取 =号,因为 left == right是有意义的 代码1234567891011121314151617181920212223class Solut...


