Leetcode
雄狮少年
落霞与孤鹜齐飞,秋水共长天一色。渔舟唱晚,响穷彭蠡之滨,雁阵惊寒,声断衡阳之浦
展开
-
dijkstra算法
代码】dijkstra算法。原创 2022-07-23 20:09:19 · 97 阅读 · 0 评论 -
.split(“,“, -1) 和 .split(“,“) 的区别
i++){}}}}原创 2022-07-21 11:05:26 · 388 阅读 · 0 评论 -
LeetCode 提供的main函数中 JsonArray 所使用的jar包
代码】LeetCode提供的main函数中JsonArray所使用的jar包。原创 2022-07-18 19:41:09 · 319 阅读 · 0 评论 -
【背包问题】 一零和 leetcode 474
背包问题原创 2022-07-11 19:00:05 · 1501 阅读 · 0 评论 -
ACM模式的坑
文章目录例子如果一开始是读入一个数字(即 int n = in.nextInt() ), 那么你注意到了吗?这个int数字后面是有个回车的,你想用 in.nextLine() 读出下一行, 即qwe,不好意思,你只能读出来空格正确的方法是:在int n = in.nextInt() ; 之后, 你再加一句 in.nextLine(); 这句话的作用就是把int后面的回车给读掉, 然后你再进行后续操作即可例子5qweqwerrqeqwwe如果一开始是读入一个数字(即 int n = in.nex原创 2022-05-15 18:53:39 · 136 阅读 · 0 评论 -
记一次 leetcodeEdit Pro 利用力扣官网调试(二叉树题目)的代码 进行的成功调试
文章目录步骤把TreeNode 的定义解封出来,并删除修饰符public把 main方法以及其他用到的函数粘贴到 class Solution 里面然后从力扣调试界面 粘贴stdin的输入样例即可(必须格式一模一样)删除之前做的其他题目中的 class Solution 即可这样就大功告成下面附上这一次成功的全部代码步骤把TreeNode 的定义解封出来,并删除修饰符public把 main方法以及其他用到的函数粘贴到 class Solution 里面然后从力扣调试界面 粘贴stdin的输入样例即原创 2022-05-04 08:58:52 · 1556 阅读 · 0 评论 -
更改搜狗输入法的默认语言为中文
添加链接描述原创 2022-05-03 09:12:13 · 698 阅读 · 0 评论 -
以后做题之前一定要先记录一下 主要思想
如题原创 2022-05-03 08:34:39 · 209 阅读 · 0 评论 -
如何查看leetcode提交历史
文章目录method 1 : leetcode 客户端可以查看method 2: 网页端备注: 网页端可以看到提交的已通过题目(大部分题目都可以在此找到,因为我是肯定肯定提交成功过的,要是巧了,没成功过,就从客户端看)method 1 : leetcode 客户端可以查看method 2: 网页端备注: 网页端可以看到提交的已通过题目(大部分题目都可以在此找到,因为我是肯定肯定提交成功过的,要是巧了,没成功过,就从客户端看)...原创 2022-04-15 07:52:14 · 3970 阅读 · 0 评论 -
215 力扣数组中对的第k大 手写小根堆 class myheap(int capacity){ int size = 0;int[] heapArray= new int[capacity+1] }
文章目录codecode//给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 //// 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 //// //// 示例 1: //// //输入: [3,2,1,5,6,4] 和 k = 2//输出: 5// //// 示例 2: //// //输入: [3,2,3,1,2,4,5,5,6] 和 k = 4//输出: 4 //// //// 提示: ////原创 2022-04-09 00:32:33 · 335 阅读 · 0 评论 -
字符串相加(数字太大,题目都提示了最起码是BigInt级别的数)(只能用StringBuffer类来按位存储数字,从最右边依次想最左边处理,因为最右边是最低位,就是处理本位上的数result%10)
文章目录思路code思路就是处理本位上的数result%10 和 进位 add = result/10codeclass Solution { public String addStrings(String num1, String num2) { StringBuffer ans = new StringBuffer(); int i= num1.length()-1,j = num2.length()-1; // 初始化的时候是第一个下标,即最后边的一原创 2022-03-21 10:13:37 · 105 阅读 · 0 评论 -
比较版本号(i,j 两个指针,遍历两个版本号字符串,解析出dot前面的一对版本号,转化成数字,然后比较,相等则还在while循环里继续比较)
文章目录题目代码(i和j 法)题目代码(i和j 法)class Solution { public int compareVersion(String v1, String v2) { int i = 0, j = 0; int n = v1.length(), m = v2.length(); while(i < n || j < m) { int num1 = 0, num2 = 0;原创 2022-03-19 11:20:55 · 143 阅读 · 0 评论 -
(递归法直接全局res,然后复用主函数)(迭代法“while(非stack.isEmpty())”,“利用栈的后入先出的特性,可以最后再将左子树压入栈,先将其他子树压入)二叉树前序遍历(后序中序同理)
文章目录题目递归法(先写好三条主逻辑,在判断root是否为空,返回res)while循环结合Stack s =newStack<>() , “利用栈的后入先出的特性,可以最后再将左子树压入栈,先将其他子树压入栈”题目递归法(先写好三条主逻辑,在判断root是否为空,返回res)class Solution {List res= new LinkedList<>();public List<Integer> preorderTraversal(TreeNode原创 2022-03-19 11:08:44 · 172 阅读 · 0 评论 -
(用栈实现队列) (妙啊。只有当pop的时候outStack为空,才从inStack中倒元素进来,否则直接就从outStack中pop即可)
题目代码class MyQueue { Deque<Integer> inStack; Deque<Integer> outStack; public MyQueue() { inStack = new LinkedList<Integer>(); outStack = new LinkedList<Integer>(); } public void push(int x原创 2022-03-16 16:01:00 · 399 阅读 · 0 评论 -
两数之和(用map做)
文章目录questioncodequestioncodeclass Solution { public int[] twoSum(int[] nums, int target) { Map<Integer,Integer> map = new HashMap<>(); for(int i =0 ;i< nums.length; i++){ map.put(nums[i],i); }原创 2022-03-16 15:27:13 · 302 阅读 · 0 评论 -
(最长重复子数组)(两个数组)(动态规划)(dp[i][j] =dp[i-1][j-1])
文章目录questioncodequestioncodeclass Solution { public int findLength(int[] A, int[] B) { if (A.length == 0 || B.length == 0) { return 0; } int[][] dp = new int[A.length+1][B.length+1]; int result = 0;原创 2022-03-16 14:54:20 · 772 阅读 · 0 评论 -
二叉树中的最大路径和 (有点生疏了)
文章目录timudaimatimudaimaclass Solution { int maxSum = Integer.MIN_VALUE; // 初始化也有坑。 本题最大路径和有可能是负数,所以maxsum初始不能为0 public int maxPathSum(TreeNode root) { if(root == null){ return 0; } dfs(root);原创 2022-03-16 14:29:59 · 890 阅读 · 0 评论 -
LRU缓存机制(利用ArrayDeque和map不会超时)(只能自己实现一个能够双向链表)
文章目录题目我的代码(利用ArrayDeque实现的queue,不会超时)更快的代码(自己定义一个双端结点Node,形成一个LRU式的链表来实现头插尾删(有两个假头head和假尾结点tail),并且可以删除给定key的结点,用map辅助get查找)题目我的代码(利用ArrayDeque实现的queue,不会超时)class LRUCache { int capacity; Map<Integer, Integer> map; // 队头的元素是上次访问距今最久的,原创 2022-03-16 14:19:43 · 1060 阅读 · 0 评论 -
(重排链表)(利用栈实现链表的从后往前遍历)(同时注意要切断尾部的next域,避免形成环形链表)
文章目录题目思路代码及注释题目思路/*思路:如果这是数组的话,相信大多数人都会做,但是本题是链表,,没办法从尾节点向前遍历,所以利用一个栈的pop到pos里面,实现从后往前遍历,并且用一个从前往后的指针pre和 pos相互呼应,只要pre 与 pos不重合 并且 pre.next != pos ,就把pos插在pre的前面*/代码及注释class Solution { /** 思路:* 如果这是数组的话,相信大多数人都会做,* 但是本题是链表,,没办法从尾节原创 2022-03-16 09:32:54 · 909 阅读 · 0 评论 -
合并两个有序链表
文章目录题目思路代码题目思路代码class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { // 递归解法 if (l1 == null) return l2; // 递归出口 if (l2 == null) return l1; // 递归出口 ListNode res = l1.val < l2.val ? l1 : l原创 2022-03-15 10:27:04 · 71 阅读 · 0 评论 -
(合并两个有序数组)(从后往前赋值,不断取两个数组的最大值,因为后面开始就留好空位了,所以不需要额外的空间)(而且nums1 ,nums2中数组本来就是有序的,如果nums2没转移完就接着转移)
文章目录题目绝妙代码题目绝妙代码 int i = m - 1; int j = n - 1; int k = nums1.length - 1; // 倒序遍历两个数组,将大的数从后往前插入nums1,并将指针向前移动一位,直至其中一个数组遍历完,将另一个未遍历完的数组全部插入到nums1 while (i >= 0 && j >= 0){ nums1[k--]=nums1[原创 2022-03-15 10:00:13 · 110 阅读 · 0 评论 -
反转链表II(观看天秀解法:定位后用头插法,思路和我一致,但是操作简单)
文章目录题目天秀解法题目天秀解法class Solution { public ListNode reverseBetween(ListNode head, int m, int n) { // 定义一个dummyHead, 这是为了防止从第一个结点就开始反转,最易要先实际的创建出来一个dummyHead结点 ListNode dummyHead = new ListNode(0); dummyHead.next = head;原创 2022-03-14 13:48:21 · 644 阅读 · 0 评论 -
环形链表II 环形链表的入口结点(S=a+b, 2S= a+b+c+b 所以a = c) Leetcode110
文章目录题目思路代码(清晰)题目思路 7<-6<- 5 | ^ | |0->1->2->3->4[-----] a居然不支持图片麻烦死个人了,简单说一下,如上图所示我们设置快慢两个指针,fast, slow fast一次前进两步,slow一次前进一步,设a为第一个节点到入环节点的距离。 a=[0->2]设b为入环口到相遇点的距离。b=[2->6]设c为相遇点到入环口的距离。c=[6-原创 2022-03-14 11:23:32 · 385 阅读 · 0 评论 -
环形链表 待完成
```cclass Solution { public boolean hasCycle(ListNode head) { ListNode slow = head; ListNode fast = head; while(fast!=null && fast.next!=null){ slow = slow.next; fast = fast.next.next; ...原创 2022-03-12 09:25:56 · 222 阅读 · 0 评论 -
(log(M+N) 二分查找(要利用好原数组有序这个条件)) 寻找两个有序数组的中位数 Leetcode104
文章目录思路题目代码时间复杂度 O((M+N)/2))时间复杂度 O(Log(M+N)思路题目代码时间复杂度 O((M+N)/2))class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int i=0; int j =0; int tol =-1; double midTwoSum = 0; int len ;原创 2022-03-11 14:58:45 · 242 阅读 · 0 评论 -
(Map)(用Map实现的滑动窗口更新滑动窗口左端点的时候用Math.max(left,map.get(charAt(i))避免之前已经存入map的元素的影响)无重复字符的最长子串Leetcode
文章目录思路代码及注释思路滑动窗口:#题目代码及注释 public int lengthOfLongestSubstring(String s) { HashMap<Character, Integer> map = new HashMap<>(); int maxLen = 0;//用于记录最大不重复子串的长度 int left = 0;//滑动窗口左指针 for (int i = 0; i < s.原创 2022-03-11 11:01:09 · 182 阅读 · 0 评论 -
(回文子串 高效率的 中心扩散法)(共有 2 * len - 1 个中心,从下标0 到 下标 len-1)回文子串的个数 Leetcode102
文章目录思路题目代码思路题目代码class Solution { public int countSubstrings(String s) { int result = 0; for(int center = 0; center < s.length()* 2 - 1; center ++){ int left = center/2; int right = left + center%2;原创 2022-03-11 09:54:50 · 1369 阅读 · 0 评论 -
(PriorityQueue就是小根堆(可改成大根堆))(利用小根堆 和 是否入堆之前的逻辑判断,可以让堆顶始终是第k大的元素) 数据流中的第k大元素 Leetcode101
文章目录思路题目代码及注释思路(PriorityQueue就是小根堆(可改成大根堆))(利用小根堆 和 是否入堆之前的逻辑判断,可以让堆顶始终是第k大的元素)题目类结构如下:反正初始化返回堆顶的元素,初始化类的时候,他又不用add()的返回值代码及注释class KthLargest { final int k; // g果然 加上 final 之后 时间和空间都变小了 final PriorityQueue<Integer> q;原创 2022-03-10 20:21:48 · 197 阅读 · 0 评论 -
手写数组大根堆(每次先判断即将加入的新值是不是比前k个元素最大值大)(否则再判断上一个窗口的最大值是否被移出)(否则再遍历当前窗口,找出最大值) 滑动窗口的最大值 Leetcode100
文章目录思路题目代码及注释笨方法 (通过双端队列Deque自己通过while循环实现一个递增的单调队列)思路首先要遍历一下第一个窗口内的所有元素,找出第一窗口内的最大值然后:// 欲求当前窗口里的最大值,// 就要先判断:// a. 新加入的值 是否比上一个窗口最大值大,若是,则当前窗口里的最大值即:新加入的值// b. 否则再判断:待移除的值 是否是上一个窗口的最大值,若不是,则当前窗口里的最大值即:上一窗口最大值// c. 否则说明上一个窗口的最大值已被移出,就只能遍历当前窗口内所有元素原创 2022-03-10 17:31:02 · 1093 阅读 · 0 评论 -
(创建的class 里面 一定要有构造函数,且构造函数不能有返回值)前缀树 Leetcode93
题目注意本题,即使word是一个是一个完整的路径,不是任何字符串的前缀,用前缀判断函数 startWith 也要返回true# 代码以及注意点class Trie { class Node{ Node[] child; boolean isend; // 没有构造函数怎么能行呢 public Node(){ child = new Node[26]; isend = fals原创 2022-03-07 17:29:46 · 663 阅读 · 0 评论 -
复习(数组 循环 双指针) (利用有序数组 将 三层循环,变成两层循环)(处理重复元素)三数之和 Leetcode90
文章目录题目代码及详细注释我的代码及注释题目(这里面最重要的就是对重复元素的跳过处理)代码及详细注释class Solution { public static List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> ans = new ArrayList(); int len = nums.length; if(nums =原创 2022-03-06 11:27:56 · 347 阅读 · 0 评论 -
(col x-y x+y 利用了数学斜线方程的x,y关系)(法二:位运算) n皇后问题 Leetcode81
文章目录思路题目代码及注释n皇后问题II(简单,只需返回 有多少种布局)思路题目任意两个皇后不能在同一列, 也不能在正斜对角线 和 负斜对角线上代码及注释class Solution { List<List<String>> res ; Set<Integer> col; Set<Integer> xy_sub; Set<Integer> xy_sum; public List<原创 2022-03-04 18:43:50 · 7608 阅读 · 0 评论 -
(用字符串操作数值)打印从1到最大的n位数(大数解法) Leetcode46
class Solution { int[] res; int count = 0; public int[] printNumbers(int n) { res = new int[(int)Math.pow(10, n) - 1]; for(int digit = 1; digit < n + 1; digit++){ for(char first = '1'; first <= '...原创 2022-02-18 18:17:22 · 89 阅读 · 0 评论 -
(匹配类型题的反向解法)(一路false,剩下的情况自然是true了)表示数字的字符串 leetcode46
class Solution { public boolean isNumber(String s) { if(s == null || s.length() == 0){ return false; } //标记是否遇到相应情况 boolean numSeen = false; boolean dotSeen = false; boolean...原创 2022-02-18 17:59:16 · 158 阅读 · 0 评论 -
(位权重法 理解 快速幂) 数值的整数次幂 Leetcode 43
本题主要考察的是:如何节省时间class Solution { public double myPow(double x, int n) { if(x==0){ // 0特殊,0的任何次幂都是0 return 0; } long b = n; // 用int 不行, 用更大范围的long可以 double mult = 1; // 有小数点的是doub..原创 2022-02-18 17:46:59 · 146 阅读 · 0 评论 -
(位运算 <<、>> 以及 <<<、>>> ) 二进制中1的个数 Leetcode 41
<< 带符号右移一位,如果是负数,就高位补 1 ; 正数,高位就补 0<<< 无符号右移一位 高位补0 public class Solution { public int hammingWeight(int n) { int ans = 0; for (int i = 0; i < 32; i++) { //System.out.printl.原创 2022-02-18 17:06:28 · 261 阅读 · 0 评论 -
(暴力归纳,分类讨论)剪绳子 Leetcode39
注意:本题是可以将绳子分成m段,m是任意的,不是题目给定的,但是请注意: 本题必须把绳子分成两段或者更多,不能是一段。也就是m大于1class Solution { public int cuttingRope(int n) { if(n==2){ return 1; } if(n==3){ return 2; } int a = n/3; //优...原创 2022-02-18 15:57:40 · 58 阅读 · 0 评论 -
leetcode刷题插件如何定位错误在第几行? 解答如下:
相信用IDEA进行leetcode刷题的朋友都会喜欢上这个插件 leetcode如果不知道的朋友可以移步我之前介绍的该插件的文章,我想详细的介绍了该插件的设置以及本地调试运行的方式。本文的目的在于解决以下问题:相信朋友们都会遇到一下情况:然而leetcode插件报的行号和我们IDEA上的行号并不对应:(小贴士: ^ 不是错误信息,没有任何意义,仅仅代表当前错误信息已经介绍完了)报错是第16行,其实在第51行(由于第50行结尾多了一个+,少了; 所以报错显示第51行有...原创 2022-02-18 14:24:30 · 641 阅读 · 0 评论 -
升序数组被旋转之后找出最小元素(考察怎么降低时间复杂度) Leetcode 36
class Solution { public int minArray(int[] numbers) { int i=0; int j = numbers.length - 1; while(i<j){ if(numbers[i]<numbers[j]){ //我的目的是找到原先未旋转时的第一个元素,那就是最小 return numbers[i];...原创 2022-02-18 12:20:53 · 123 阅读 · 0 评论 -
斐波那契数列和青蛙跳台阶 Leetcode 36
//斐波那契数列class Solution { public int fib(int n) { int a = 0, b = 1, sum; for(int i = 0; i < n; i++){ sum = (a + b) % 1000000007; a = b; b = sum; } ...原创 2022-02-17 22:51:22 · 62 阅读 · 0 评论