Leetcode
Leetcode刷题
jh__chen
这个作者很懒,什么都没留下…
展开
-
LeetCode-77-组合
https://leetcode-cn.com/problems/combinations/LeetCode-77-组合回溯相关问题通过的代码:public static void combine1(int n, int k, int step) { if (list.size() == k) { lists.add(new ArrayList<>(list)); return ; } for (int i = step;i <原创 2022-04-24 14:19:25 · 260 阅读 · 0 评论 -
全排列【回溯实现】
其他的就是全排列的操作,用的是回溯的方法进行操作知识点:1、填充进一个需要得到的列表(容器)中的时候需要首先应用拷贝到指定的位置才行。eg。res.add(new ArrayList<Integer>(output));2、Connection.swap(List,int,int); 交换List中位置是两个数字值的位置。3、List是个接口,ArrayList是实现类,如果想要使用List需要使用List变量同时new ArrayList()才行。在另外的函数声明中变量类.原创 2022-02-14 09:54:57 · 240 阅读 · 0 评论 -
异或运算解决问题
公式:1、任何数和 00 做异或运算,结果仍然是原来的数,即 a⊕0=a。2、任何数和其自身做异或运算,结果是 0,即 a⊕a=0。3、异或运算满足交换律和结合律,即 a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b。给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。分析:直接使用异或的方式进行求解class Solution { public int singleNumber(int[] nums) { int s原创 2022-01-27 09:20:49 · 1291 阅读 · 0 评论 -
求二叉树的路径和
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。叶子节点 是指没有子节点的节点。分析:方法一、递归求解递归的方式 求每一个从根节点到叶子节点的路径。出口设置为1、root为空2、到叶子节点了,但是到叶子节点的路径节点和不为需要的值public boolean hasPathSum(TreeNode root,原创 2022-01-26 09:39:39 · 135 阅读 · 0 评论 -
二叉树的最小深度
给一个二叉树,求解最小深度方法一:深度优先搜索代码:class Solution { public int minDepth(TreeNode root) { if (root == null) { return 0; } if (root.left == null && root.right == null) { return 1; } int原创 2022-01-25 09:45:21 · 553 阅读 · 0 评论 -
给定数组构建平衡二叉树BST
给定数组构建平衡二叉树中序遍历,总是选择中间位置左边的数字作为根节点选择中间位置左边的数字作为根节点,则根节点的下标为mid=(left+right)/2,此处的除法为整数除法。官方题解:class Solution { public TreeNode sortedArrayToBST(int[] nums) { return helper(nums, 0, nums.length - 1); } public TreeNode helper(int[] n原创 2022-01-25 09:24:30 · 666 阅读 · 0 评论 -
牛顿迭代法
给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。示例 1:输入:x = 4输出:2示例 2:输入:x = 8输出:2解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。细节:1、极小值取1e −7public int mySqrt(int x) { if (x ==原创 2022-01-12 13:52:24 · 79 阅读 · 0 评论 -
leetcode-20-有效的括号
题目描述:给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例2:输入:s = "()[]{}"输出:true示例3:输入:s = "(]"输出:false示例4:输入:s = "([)]"输出:falseclass Solution { public...原创 2021-08-05 21:43:42 · 53 阅读 · 0 评论 -
leetcode-27.移除元素
题目:给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返...原创 2021-08-03 21:23:54 · 87 阅读 · 0 评论 -
Leetcode-12-反转罗马数字
12. 整数转罗马数字(简单)罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII...原创 2021-04-26 23:23:43 · 80 阅读 · 0 评论 -
Leetcode-三个数字之和
15. 三数之和给你一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c ,使得a + b + c =0 ?请你找出所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。ps:示例2,3可以看看示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]class ...原创 2021-04-20 23:00:45 · 166 阅读 · 0 评论 -
反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULLpublic static ListNode reverseList(ListNode head) { ListNode prev = null; ListNode tail = head; while(tail != null){ ListNode temp = tail.n.原创 2021-04-19 20:42:07 · 58 阅读 · 0 评论 -
回文数
两个方法大同小异class Solution { public static boolean isPalindrome(int x) { if(x<0) return false; if(x==0) return true; long t = 1; long n = x; int count = 0; for(;n/t>0;t*=10){原创 2021-04-18 22:38:26 · 61 阅读 · 0 评论 -
21. 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int ..原创 2021-04-18 21:23:01 · 50 阅读 · 0 评论 -
Leetcode-3-无重复字符的最长子串
3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。分析:1、利用Map的规则,序号和值相匹配;2、注意,当end所指向的元素在数组中有值。start指向重复元素的后一个。public static int lengthOfLongestSubstring(String s) { Map&l...原创 2021-04-13 22:47:00 · 63 阅读 · 0 评论 -
LeetCode-206-反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL简单题,两种方法,遍历+递归class Solution { public ListNode reverseList(ListNode head) { ListNode prev = null; ListNode curr = head; wh.原创 2021-04-13 00:21:31 · 51 阅读 · 0 评论 -
剑指 Offer 64. 求1+2+…+n
前言:本来想写了某公司的笔试题来放松一下的,未遂。求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。分析:不知道有短路的语法,不知如何下笔。如下,这样看://常规方法public int sumNums(int n) { if(n == 1) return 1; n += sumNums(n - 1); return n;}但是!并没有。先看一个自己没想到的C..原创 2021-04-11 22:36:24 · 55 阅读 · 0 评论 -
leetcode-1027-最长等差数列
最长等差数列给定一个整数数组A,返回 A中最长等差子序列的长度。回想一下,A的子序列是列表A[i_1], A[i_2], ..., A[i_k] 其中0 <= i_1 < i_2 < ... < i_k <= A.length - 1。并且如果B[i+1] - B[i](0 <= i < B.length - 1) 的值都相同,那么序列B是等差的。示例 1:输入:[3,6,9,12]输出:4解释:整个数组是公差为 3 ...原创 2021-04-11 00:54:20 · 404 阅读 · 0 评论 -
Leetcode-998-最大二叉树 II
题目链接:最大二叉树Ⅱ同链接:654. 最大二叉树root.val<val root放B的左子树,否则给的节点在A的右子树中,即遍历右子树找到一个比它小的树放在左子树即可。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * Tr原创 2021-04-06 23:45:34 · 65 阅读 · 0 评论