h5网站制作一般多少钱,二手房房产网站建设,凡科网站后台登陆,豌豆荚应用商店977. 有序数组的平方
简单的方法是平方后使用排序方法第2种方法是双指针方法#xff0c;从两边进行判断#xff0c;将最大的从后往前放
public static int[] sortedSquares(int[] nums) {// 输入#xff1a;nums [-4,-1,0,3,10]// 输出#xff1a;[0,1,9,16,100]// 解释…977. 有序数组的平方
简单的方法是平方后使用排序方法第2种方法是双指针方法从两边进行判断将最大的从后往前放
public static int[] sortedSquares(int[] nums) {// 输入nums [-4,-1,0,3,10]// 输出[0,1,9,16,100]// 解释平方后数组变为 [16,1,0,9,100]// 排序后数组变为 [0,1,9,16,100]// 从前往后来决定元素在哪个位置是不现实的// 因此从后往前判断比较right 和 left的平方// 谁大就放在最后一个位置然后移动那个比较大的元素的指针int left 0;int right nums.length - 1;// 存储结果数组i为下标int i nums.length-1;int[] sortNum new int[nums.length];// 边界判断 可举例一个元素的情况while (left right) {int leftValue nums[left]*nums[left];int rightValue nums[right]*nums[right];// 若右边元素大则放置右边元素值right指针左移if (leftValue rightValue) {sortNum[i--] rightValue;right--;}else {sortNum[i--] leftValue;left;}}return sortNum;
}209.长度最小的子数组
滑动窗口方法当大于等于给定值时便收缩窗口不断更新最小长度
public int minSubArrayLen(int target, int[] nums) {int left 0;int right 0;int sum 0;int minLen nums.length 1;while (right nums.length) {sum nums[right];// 当一旦大于给定值便缩小窗口看左边界收缩后是否最小长度会发生变化while (sum target) {minLen Math.min(minLen, right - left1);sum - nums[left];}right;}// 若不存在最小窗口数组和 target或数组长度为0则minLen应该赋为0return minLen nums.length 1 ? 0 : minLen;}59. 螺旋矩阵 II
按照顺时针走路注意边界的选取一开始的起点和终点需要选取好在这我选择前闭后闭方法
public int[][] generateMatrix(int n) {int[][] res new int[n][n];int num 1;int matrixNum n * n;int left 0;int right n-1;int top 0;int bottom n-1;while (num matrixNum) {for (int i left; i right; i) {res[top][i] num;}top;for (int i top; i bottom; i) {res[i][right] num;}right--;for (int i right; i left; i--) {res[bottom][i] num;}bottom--;for (int i bottom; i top; i--) {res[i][left] num;}left;}return res;}