首页 > 其他分享 >day02

day02

时间:2022-09-22 21:13:55浏览次数:61  
标签:平方 right nums int day02 result 数组

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]

因为是对平方之后的数进行排序,负数的平方可能更大,而平方之后最大的负数在最左边,平方之后最大的正数在最右边,此时用双指针法,最左最右各一个指针对数组进行遍历:新建一个新数组result(长度和原数组大小相等),左指针与右指针进行遍历,平方更大的数放入新数组result中。

class Solution {
    public int[] sortedSquares(int[] nums) {
        int fast=0,slow=nums.length-1;
        int k=nums.length-1;
        int[] result=new int[nums.length];
        while(fast<=slow){  //注意是 ’<=‘而不是’<‘  否则会漏掉一个元素
            if(nums[fast]*nums[fast]<nums[slow]*nums[slow]){
                result[k--]=nums[slow]*nums[slow]; //右边更大,右边平方存入result,右指针向左移动一位
				//新数组 result因为每次存的是最大数,所以从尾部开始更新
                slow--;
            }else{
                result[k--]=nums[fast]*nums[fast];
                fast++;
            }
        }
        return result;
    }
}

209. 长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。

示例:

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

暴力解法

class Solution {      //暴力解法
    public int minSubArrayLen(int target, int[] nums) {        
        int result=Integer.MAX_VALUE;
        for(int i=0;i<nums.length;i++){   //两个for循环  外层for循环确定左边界  内for循环 从外循i起点开始遍历   确定右边界
            int sum=0;
            for(int j=i;j<nums.length;j++){
                sum+=nums[j];
                if(sum>=target){
                    result=Math.min(result,j-i+1);
                    break;
                }
            }
        }
        return result==Integer.MAX_VALUE?0:result;
    }
}

利用两个指针left,right使用滑动窗口方法

class Solution {     
    public int minSubArrayLen(int target, int[] nums) {
        int left=0,right=0;
        int result=Integer.MAX_VALUE;    //定义一个result变量存储当前数组长度
        int sum=0;      
        for(right=0;right<nums.length;right++){   //快指针先向后遍历,当sum和大于等于target时停止,然后开始操作慢指针向后遍历,只要满足sum>=target,寻找出最小的子序列。
            
            sum+=nums[right];
            while(sum>=target){
                result=Math.min(result,right-left+1);
                sum-=nums[left];
                left++;
            }
        }
        return result==Integer.MAX_VALUE?0:result;
    }
}

标签:平方,right,nums,int,day02,result,数组
From: https://www.cnblogs.com/wdnmdp/p/16720843.html

相关文章

  • python学习之路Day02
    Python学习之路Day02:一、今日学习内容概括:计算机五大组成部分详解计算机三大核心硬件操作系统编程与编程语言编程语言的发展编程语言分类python解释器......
  • day02-代码实现01
    多用户即时通讯系统024.编码实现014.1功能实现-用户登录4.1.1功能说明因为还没有学习数据库,我们人为规定用户名/id=100,密码为123456就可以登录,其他用户不能登录,后......
  • 02 uniapp/微信小程序 项目day02
    一.分类1.1页面布局首先创建cate的分支定义基本结构,因为是两个需要滚动的区域,所以这里要用到组件scroll这个组件如果是yscroll那就要固定高度,xscroll那就要固定......
  • JavalearnDay02
    变量表达式相关概念:(一)常量​ 概念:常量,在程序中运行过程中,值不能发生改变的量(数值).(二)计算机存储单元计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为......
  • JavaSe-day02-基本概念
    Java基本语法本章内容有注释,关键字,字面量,变量!注释什么是注释注释是在程序指定位置添加的说明性信息,就是对代码的一种解释。注释的分类1.单行注释格式://注释信息......
  • Day02超链接标签及应用
    链接标签超链接​从一个页面链接到另一个页面锚链接功能性链接<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>链接标签学习<......
  • day02
    ##Windows常用快捷键ctrl+e:打开我的电脑ctrl+shift+esc:打开任务管理器       ##基本的Dos命令打开cmd的方式1.开始+系统+命令提示符......
  • day02
    5.Java事件处理机制5.1小球移动案例通过监听键盘按键,实现小球的移动例子:packageli.gui.even_;importjavax.swing.*;importjava.awt.*;importjava.awt.event.......
  • 每天都进步的课堂随便Day02
    类型转换#强制转换(类型)变量名高----->低#自动转换低----->高#操作比较大的数的时候,注意溢出问题#JDK7特性数字可以用下划线分割intmoney=10_0000_0000;#int......
  • Day02
    硬件软件快捷键ctrl+cctrl+vctrl+a全选ctrl+x剪切ctrl+z撤销ctrl+s保存alt+F4关闭窗口shift+delete永久删除window+r打开程序window+e打开我的电脑c......