首页 > 其他分享 >[刷题记录]Leetcode列表专题

[刷题记录]Leetcode列表专题

时间:2023-06-30 22:44:35浏览次数:39  
标签:right nums int res 列表 ++ 刷题 Leetcode left

No.1

题目

Leetcode link

思路

  • 数组本身是非降序,即最小值和最大值在数组的两端
  • 非降序数组每个元素平方后,最大值在两端,最小值在中部
  • 双指针比较数组两端最大值的大小,提取出最大的。移动双指针,然后得到次大,次次大,逐步得到结果
  • 注意left==right是有意义的,即待处理数组只有一个元素,就是最中间(也是最小)的元素

代码

public static int[] sortedSquares(int[] nums) {  
    int len = nums.length;  
    int left = 0, right = len - 1;  
    int[] res = new int[len];  
    int res_index = len - 1;  
    while (left <= right && res_index >= 0) {  
        int sq_left = nums[left] * nums[left];  
        int sq_right = nums[right] * nums[right];  
        // 选大的,写入res数组  
        if (sq_left > sq_right) {  
            res[res_index--] = sq_left;  
            left++;  
        } else {  
            res[res_index--] = sq_right;  
            right--;  
        }  
    }  
    return res;  
}

No.2

题目

长度最小的子数组

思路

  • 双指针控制子数组窗口
  • 数字从窗口右边入,左边出
  • 从整体的数组来看,right是一直在向右滑动的,可以用for循环来控制right递增

代码

public int minSubArrayLen(int target, int[] nums) {  
    int len = nums.length;  
    int sum = 0, min = Integer.MAX_VALUE;  
    int left = 0, right = 0;  
    for (; right < len; right++) {  
        sum += nums[right];  
        while (sum >= target) {  
            int windowLength = right - left + 1;  
            min = Math.min(min, windowLength);  
            sum -= nums[left++];  
        }  
    }  
    return min == Integer.MAX_VALUE ? 0 : min;  
}

No.3

题目

螺旋矩阵

思路

  • 一个变量控制递增的数字
  • 定义好边界
  • 考虑奇偶边长
  • 严格遵守边界定义,依照定义填充数字
  • 注意起始位置

代码

int[][] matrix = new int[n][n];  
int num = 1;  
  
for (int i = 0; i < n / 2; i++) {  
    // RIGHT, j: column  
    for (int j = i; j < n - i - 1; j++) {  
        matrix[i][j] = num++;  
    }  
    // DOWN, j: row  
    for (int j = i; j < n - i - 1; j++) {  
        matrix[j][n - i - 1] = num++;  
    }  
    // LEFT, j: column  
    for (int j = n - i - 1; j > i; j--) {  
        matrix[n - i - 1][j] = num++;  
    }  
    // UP, j: row  
    for (int j = n - i - 1; j > i; j--) {  
        matrix[j][i] = num++;  
    }  
}  
  
if (n % 2 != 0) {  
    matrix[n / 2][n / 2] = num;  
}  
  
return matrix;

标签:right,nums,int,res,列表,++,刷题,Leetcode,left
From: https://www.cnblogs.com/tomatoQt/p/17517974.html

相关文章

  • Kotlin 集合 - 创建列表、集合和映射
    集合是保存多个相同或不同类型元素的容器。它们提供了各种方法和操作来有效地操纵和访问存储的数据。了解如何创建和使用集合对于任何Kotlin开发人员都至关重要,因为这使他们能够有效地组织和管理数据。列表列表是Kotlin中允许重复元素的有序集合。它们提供了根据元素在列表中的......
  • leetcode -- Maximum Gap -- 与distributed sorting有关,重点复习一下
    https://leetcode.com/problems/maximum-gap/sort算法除了比较算法之外,还有distributedsort,时间效率可以优于O(nlogn),甚至可以达到O(n).包括coutingsort,bucketsort,radixsort.复习这三种的原理。参考https://www.byvoid.com/blog/sort-radix这里对于bucketsort,提到可能......
  • EasyDSS视频直播点播平台视频回看列表显示为ID的排查与优化
    视频直播点播EasyDSS平台具备灵活的视频能力,包括直播、点播、转码、管理、录像、检索、时移回看等,平台支持音视频采集、视频推拉流、播放H.265编码视频、存储、分发等能力服务,可应用在无人机推流、在线直播、虚拟直播、远程培训等场景中。有用户反馈,在EasyDSS视频回看列表中,“名称......
  • leetcode 19. 删除链表的倒数第 N 个结点
    链表问题,需要注意一下是倒着数还是正着数,和头结点会不会被删除即可publicListNoderemoveNthFromEnd(ListNodehead,intn){if(head==null){returnnull;}//头结点会被删除吗?intlength=0;ListNodep=......
  • 设备通过GB28181接入EasyCVR,设备列表多出一层目录是什么原因?
    EasyCVR平台基于云边端协同架构,可支持多协议、多类型的海量设备接入与分发,平台既具备传统安防视频监控的能力,也能接入AI智能分析的能力,在线下均有大量应用。EasyCVR平台可提供的视频能力包括:视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音......
  • Leetcode 20. 有效的括号
    可以将反括号先存入map中,而后如果当前字符能在map中查到,说明是反括号,否则是正括号。但是结合map的使用和将反括号作为map的key,并不容易第一时间想到。classSolution{public:boolisValid(strings){intn=s.size();if(n%2){//如......
  • 【leetcode】【83】【删除排序链表中的重复元素】
    c++第一个方法代码#include<algorithm>#include<iostream>#include<memory>#include<vector>//Definitionforsingly-linkedlist.structListNode{intval;ListNode*next;ListNode():val(0),next(nullptr){}......
  • https://leetcode.cn/ 第9题 判断回文数
    #回文数121是;123不是#定义一个函数判断是否是回文数defget_Hui(num):#将整数num转字符串str_num=str(num)str_num_change=str_num[::-1]num2=int(str_num_change)#判断整数num和num2是否相等if(num2==num):print("是......
  • 亚马逊国际获得AMAZON商品详情API接口采集sku商品规格信息列表Java调用演示案例
    ​亚马逊商品详情API接口的作用是获取Lazada电商平台上的某一商品的详情信息,包括商品的名称、销售价格、库存数量、图片、商品描述、品牌、产地、售后保障等信息。开发者可以使用该API接口获取到商品的原始数据,进行分析、筛选等操作。通过该接口获取到的商品详情数据可以结合其......
  • 列表 元祖
    #list列表classmate=["lily","jjj","hhh"]#打印列表的长度print(len(classmate))#打印下标为0的print(classmate[0])#打印下标为-1的元素倒数第一个元素print(classmate[-1])#追加元素仅能在最末尾app="hhhok"classmate.append(app)print(classmate)......