• 【随想】每日两题Day.2


    题目: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]
    

    提示:

    • 1 <= nums.length <= 104
    • -104 <= nums[i] <= 104
    • nums 已按 非递减顺序 排序

    代码:

    1. class Solution {
    2. public int[] sortedSquares(int[] nums) {
    3. int[] arr = new int[nums.length];
    4. int left = 0;
    5. int right = nums.length - 1;
    6. int index = nums.length - 1;
    7. while(left<=right) {
    8. if(nums[left]*nums[left]>nums[right]*nums[right]) {
    9. arr[index] = nums[left]*nums[left];
    10. left++;
    11. index--;
    12. }else {
    13. arr[index] = nums[right]*nums[right];
    14. right--;
    15. index--;
    16. }
    17. }
    18. return arr;
    19. }
    20. }

    思考:

    此题可以暴力排序,但是追求速率将时间复杂度降低到O(n),采用双指针方法。下标left和right的值,哪个大先存哪个,从后往前存数据。

    题目:LeetCode 209.长度最小的子数组

    给定一个含有 n 个正整数的数组和一个正整数 target 。

    找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度如果不存在符合条件的子数组,返回 0 。

    示例 1:

    输入:target = 7, nums = [2,3,1,2,4,3]
    输出:2
    解释:子数组 [4,3] 是该条件下的长度最小的子数组。
    

    示例 2:

    输入:target = 4, nums = [1,4,4]
    输出:1
    

    示例 3:

    输入:target = 11, nums = [1,1,1,1,1,1,1,1]
    输出:0
    

    提示:

    • 1 <= target <= 109
    • 1 <= nums.length <= 105
    • 1 <= nums[i] <= 105

    代码:

    1. class Solution {
    2. public int minSubArrayLen(int target, int[] nums) {
    3. int sum = 0;
    4. int ret = Integer.MAX_VALUE;
    5. int left = 0;
    6. for(int right = 0;right
    7. sum += nums[right];
    8. while(sum>=target) {
    9. ret = Math.min(right-left+1,ret);
    10. sum-=nums[left];
    11. left++;
    12. }
    13. }
    14. return ret == Integer.MAX_VALUE ? 0:ret;
    15. }
    16. }

    思考:

    这道题目采用的是滑动窗口法,用right来控制终止位置,当sum>=target时(一点要注意包括等于!)来缩小left起始位置。然后依次窗口向右走,不断更新数组的长度。

  • 相关阅读:
    【C++】二叉搜索树
    基于HTML5和CSS3搭建一个Web网页(二)
    postgresql 15源码浅析(5)—— pg_control
    C语言自定义类型详解 —— 结构体、枚举、联合体
    MySQL----索引
    YbtOJ「基础算法」第1章 递推算法
    java毕业设计—— 基于java+JSP+SSH的任务调度系统设计与实现——任务调度系统
    pandas 中的两种数据结构:Series, DataFrame
    Linux-awk和printf
    Spring的注解总结
  • 原文地址:https://blog.csdn.net/weixin_63895720/article/details/132756322