《LeetCode热题100》笔记题解思路技巧优化_Part_2

《LeetCode热题100》笔记&题解&思路&技巧&优化_Part_2

  • 😍😍😍 相知
  • 🙌🙌🙌 相识
  • 😢😢😢 开始刷题
    • 普通数组
      • 🟡1. 最大子数组和
      • 🟡2. 合并区间
      • 🟡3. 轮转数组
      • 🟡4. 除自身以外数组的乘积
      • 🔴5. 缺失的第一个正数
    • 矩阵
      • 🟡6. 矩阵置零
      • 🟡7. 螺旋矩阵
      • 🟡8. 旋转图像
      • 🟡9. 搜索二维矩阵II

在这里插入图片描述

😍😍😍 相知

刷题不要一上来就直接干,先看题,明白题说的什么意思,然后想一下用什么现成的算法和数据结构可以快速解决,如果还是无从下手,建议先去看视频,不要直接翻评论或官方代码实现,看完视频,自己在idea中模拟敲几遍代码,如果跑通了,先别急着上leetcode黏贴,而是再回顾一下要点,然后确定自己完全懂了后,在leetcode中手敲,注意是手敲下来!!! 目前我就是采用的这种方法,虽然慢,但是可以维持一周忘不掉它,如果要想长期不忘,只能隔段时间就review一下了,就算是大牛,知道方法,长时间不碰,也不可能保证一次到位把代码敲完一遍过!!!

🙌🙌🙌 相识

刷LeetCode热题100的想法有几个原因:

  1. 流行度高:LeetCode是一个广受欢迎的在线刷题平台,拥有大量用户和活跃的讨论社区。因此,热门题目通常代表了大多数人认为重要的题目或者面试中常见的题目。

  2. 面试备战:LeetCode上的题目往往和面试题目有很大的重合度。刷LeetCode热题100可以帮助你熟悉常见的面试题型和解题思路,提高应对面试的能力。

  3. 广泛的覆盖:热题100覆盖了各种难度级别的题目,包括简单、中等和困难。通过解答这些题目,可以提高自己的算法和编程能力,并扩展自己的知识面。

  4. 反馈和讨论:由于热题100是根据用户的反馈和讨论度排名的,因此这些题目往往有大量的解题思路和讨论可以参考。你可以从其他人的解题过程中学习到很多知识和技巧。

😢😢😢 开始刷题

普通数组

🟡1. 最大子数组和

题目跳转:https://leetcode.cn/problems/maximum-subarray/description/?envType=study-plan-v2&envId=top-100-liked

在这里插入图片描述

class Solution {public int maxSubArray(int[] nums) {if(nums.length<=0)return 0;int max = nums[0];int left = 0;int [] maxconut  = new int[nums.length];maxconut[0] = nums[0];for(int right = 1;right < nums.length;right++){maxconut[right] = maxconut[right-1]+nums[right]>=nums[right]?maxconut[right-1]+nums[right]:nums[right];max = Math.max(max,maxconut[right]);}return max;}
}

🟡2. 合并区间

题目跳转:https://leetcode.cn/problems/merge-intervals/?envType=study-plan-v2&envId=top-100-liked

在这里插入图片描述

class Solution {public int[][] merge(int[][] intervals) {if(intervals.length<=1)return intervals;Arrays.sort(intervals, (a, b) -> a[0] - b[0]);ArrayList<int[]> arraylist = new ArrayList<>();int start = intervals[0][0];int rightbound = intervals[0][1];for(int i =1 ;i<intervals.length;i++){if(rightbound<intervals[i][0]){arraylist.add(new int[]{start, rightbound});start = intervals[i][0];rightbound = intervals[i][1];}else{rightbound = Math.max(rightbound,intervals[i][1]);}}arraylist.add(new int[]{start, rightbound});return arraylist.toArray(new int [0][0]);}
}

🟡3. 轮转数组

题目跳转:https://leetcode.cn/problems/rotate-array/?envType=study-plan-v2&envId=top-100-liked

在这里插入图片描述
学会一个函数:
System.arraycopy(nums,0,arr,nums.length-k,k);

直接举例:

arrayCopy( arr1, 2, arr2, 5, 10);

意思是;将arr1数组里从索引为2的元素开始, 复制到数组arr2里的索引为5的位置, 复制的元素个数为10个.

class Solution {public void rotate(int[] nums, int k) {if(nums.length<=1) return; k = k%nums.length;k = nums.length - k;int [] arr = new int [nums.length];System.arraycopy(nums,0,arr,nums.length-k,k);System.arraycopy(nums,k,arr,0,nums.length-k);System.arraycopy(arr,0,nums,0,nums.length);}}

🟡4. 除自身以外数组的乘积

题目跳转:https://leetcode.cn/problems/product-of-array-except-self/?envType=study-plan-v2&envId=top-100-liked
在这里插入图片描述

class Solution {public int[] productExceptSelf(int[] nums) {if(nums.length==1)return nums;int [][] temp = new int [2][nums.length];int [] result  = new int [nums.length];for(int i = 0;i<nums.length;i++){if(i==0) temp[0][i] = 1;else{temp[0][i] = temp[0][i-1]*nums[i-1];}}for(int i = nums.length-1;i>=0;i--){if(i==nums.length-1) temp[1][i] = 1;else{temp[1][i] = temp[1][i+1]*nums[i+1];}}for(int i = nums.length-1;i>=0;i--){result[i] = temp[0][i]*temp[1][i];}return result;}
}

🔴5. 缺失的第一个正数

题目跳转:https://leetcode.cn/problems/first-missing-positive/?envType=study-plan-v2&envId=top-100-liked

把对应的数放到对应的索引处

class Solution {public int firstMissingPositive(int[] nums) {for(int i = 0;i < nums.length;i++ ){while(nums[i]>0&&nums[i]<nums.length){if(nums[i] == nums[nums[i]-1])break;int temp = nums[nums[i]-1];nums[nums[i]-1] = nums[i];nums[i] = temp;}}for(int i = 0;i < nums.length;i++ ){if(nums[i]!=i+1)return i+1;}return nums.length+1;}
}

矩阵

🟡6. 矩阵置零

题目跳转:https://leetcode.cn/problems/set-matrix-zeroes/description/?envType=study-plan-v2&envId=top-100-liked

在这里插入图片描述
在这里插入图片描述

得到原始数组 先遍历!
在这里插入图片描述
得到各个0位置之后,再处理。
在这里插入图片描述

class Solution {public void setZeroes(int[][] matrix) {if(matrix.length<=0||matrix[0].length<=0)return;ArrayList<int[]> temp = new ArrayList<>();for(int i = 0;i<matrix.length;i++){for(int j = 0;j<matrix[0].length;j++){if(matrix[i][j]==0){temp.add(new int[]{i,j});}}}for(int i = 0;i < temp.size();i++){int aa = 0;while(aa<matrix[0].length)matrix[temp.get(i)[0]][aa++] =0;int bb = 0;while(bb<matrix.length)matrix[bb++][temp.get(i)[1]] =0;}}
}

🟡7. 螺旋矩阵

题目跳转:https://leetcode.cn/problems/spiral-matrix/description/?envType=study-plan-v2&envId=top-100-liked

定义几个边界值,然后遍历完一行或者 一列 则收缩一个值

class Solution {public List<Integer> spiralOrder(int[][] matrix) {if(matrix.length<=0||matrix[0].length<=0) return new ArrayList<>();List<Integer> list = new ArrayList<>();int left = 0;int right = matrix[0].length-1;int up = 0;int down = matrix.length-1;int row = left;int col = up;// 以上定义了变量while(left<=right||up<=down){while(row<=right){list.add(matrix[col][row++]);}up++;row = right;col = up;if(right<left||down<up)break;while(col<=down){list.add(matrix[col++][row]);}right--;row = right;col = down;if(right<left||down<up)break;while(row>=left){list.add(matrix[col][row--]);}down--;row = left;col = down;if(right<left||down<up)break;while(col>=up){list.add(matrix[col--][row]);}left++;row = left;col = up;if(right<left||down<up)break;}return list;}
}

🟡8. 旋转图像

题目跳转:https://leetcode.cn/problems/rotate-image/description/?envType=study-plan-v2&envId=top-100-liked

在这里插入图片描述
在这里插入图片描述

class Solution {public void rotate(int[][] matrix) {if(matrix.length<=0||matrix[0].length<=0)return;int left = 0;int right = matrix[0].length-1;int up = 0;int down = matrix.length-1;while(left<right){int temp = 0;for(int i = 0;i<right-left;i++){temp = matrix[up][left+i];matrix[up][left+i] = matrix[down-i][left];matrix[down-i][left] = matrix[down][right-i];matrix[down][right-i] = matrix[up+i][right];matrix[up+i][right] = temp;}left++;right--;up++;down--;}}
}

🟡9. 搜索二维矩阵II

题目跳转:https://leetcode.cn/problems/search-a-2d-matrix-ii/?envType=study-plan-v2&envId=top-100-liked

在这里插入图片描述

class Solution {public boolean searchMatrix(int[][] matrix, int target) {if(matrix.length<=0||matrix[0].length<=0)return false;int row = 0;int col = matrix[0].length-1;while(row>=0&&row<matrix.length&&col>=0&&col<matrix[0].length){if(matrix[row][col]==target)return true;else if(matrix[row][col]<target) row++;else col--;}return false;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/539397.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构高阶】图

目录 一、图的基本概念 二、 图的存储结构 2.1 邻接矩阵 2.2.1 邻接矩阵存储模式的代码实现 2.2.2 邻接矩阵存储的优缺点 2.2 邻接表 2.2.1 无向图的邻接表 2.2.2 有向图的邻接表 2.2.3 邻接表存储模式的代码实现 2.2.4 邻接表存储的优缺点 三、图的遍历 3.1 图的…

稀碎从零算法笔记Day17-LeetCode:有效的括号

题型&#xff1a;栈 链接&#xff1a;20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述&#xff08;红字为笔者添加&#xff09; 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 …

Ubuntu Flask 运行 gunicorn+Nginx 部署

linux Ubuntu 下运行python 程序出现killed 原因&#xff1a;CPU或内存限制&#xff1a;在华为云上&#xff0c;你可能有CPU或内存使用的限制。例如&#xff0c;如果你使用的是一个固定大小的实例&#xff0c;那么超过该实例的CPU或内存限制可能会导致进程被杀死。 参考&am…

微前端框架 qiankun 配置使用【基于 vue/react脚手架创建项目 】

qiankun官方文档&#xff1a;qiankun - qiankun 一、创建主应用&#xff1a; 这里以 vue 为主应用&#xff0c;vue版本&#xff1a;2.x // 全局安装vue脚手架 npm install -g vue/clivue create main-app 省略 vue 创建项目过程&#xff0c;若不会可以自行百度查阅教程 …

【mask】根据bbox提示同一张图片生成多个矩形框掩码

前提&#xff1a;使用labelimg得到bbox 1.代码 import cv2 import numpy as np# 读取图片 image cv2.imread("D:\Desktop\mult_test\images\SL03509990_1694761223500.jpg")# 假设我们有多个目标的ROI&#xff08;感兴趣区域&#xff09; rois [(565,635,1006,85…

如何在Tomcat中的webapps文件中手动发布一个应用

目录标题 第一步 下载Tomcat第二步 解压及有哪些重要的文件夹第三步 找到webapps文件夹以及新建一个新文件夹第四步 新建一个应用并且写入代码第五步 打开和关闭Tomcat&#xff0c;在运行之前我们要先打开Tomcat最后一步&#xff0c;运行应用总结 第一步 下载Tomcat 下载链接&…

webpack5零基础入门-7webpack修改输出文件目录

1.修改output中的path后打包 path: path.resolve(__dirname, dist/js),//所有文件的输出目录 可以看到dist目录下多了个js目录 但所有文件都在js目录中 我们想要的是根据不同的资源进行分类很显然这样不行 从这里可以看出path是所有文件的输出目录 2.修改output中的filename…

15届蓝桥杯第一期模拟赛所有题目解析

文章目录 &#x1f9e1;&#x1f9e1;t1_字母数&#x1f9e1;&#x1f9e1;问题描述思路代码 &#x1f9e1;&#x1f9e1;t2_大乘积&#x1f9e1;&#x1f9e1;问题描述思路代码 &#x1f9e1;&#x1f9e1;t3_星期几&#x1f9e1;&#x1f9e1;问题描述思路代码 &#x1f9e1;…

IP代理技术革新:探索数据采集的新路径

引言&#xff1a; 随着全球化进程不断加深&#xff0c;网络数据采集在企业决策和市场分析中扮演着愈发重要的角色。然而&#xff0c;地域限制和IP封锁等问题常常给数据采集工作带来了巨大挑战。亿牛云代理服务凭借其强大的网络覆盖和真实住宅IP资源&#xff0c;成为解决这些问…

Gitee 服务器

Git 服务器集成 1. 创建仓库 2. 远程仓库简易操作指令 # Git 全局设置&#xff0c;修改成自己的信息 git config --global user.name "Muko" git config --global user.email "txk0x7d2163.com" # 创建 git 仓库&#xff0c;基本操作指令和其他远程仓库一…

Unity资源热更新----AssetBundle

13.1 资源热更新——AssetBundle1-1_哔哩哔哩_bilibili Resources 性能消耗较大 Resources文件夹大小不能超过2个G 获取AssetBundle中的资源 打包流程 选择图片后点击 创建文件夹&#xff0c;Editor优先编译 打包文件夹位置 using UnityEditor; using UnityEngine; public cla…

VueX详解

Vuex 主要应用于Vue.js中管理数据状态的一个库通过创建一个集中的数据存储&#xff0c;供程序中所有组件访问 使用场景 涉及到非父子关系的组件&#xff0c;例如兄弟关系、祖孙关系&#xff0c;甚至更远的关系组件之间的联系中大型单页应用&#xff0c;考虑如何更好地在组件外部…