刷题
qiao111_
这个作者很懒,什么都没留下…
展开
-
力扣 汉明距离
题目:https://leetcode-cn.com/problems/hamming-distance/注意:位运算比取余效率高应用异或运算代码:class Solution { public int hammingDistance(int x, int y) { int res = x ^ y; int sum = 0; while(res > 0){ if((res & 1) == 1){原创 2022-03-13 16:21:45 · 137 阅读 · 0 评论 -
力扣 路径总和 III
题目:https://leetcode-cn.com/problems/path-sum-iii/解题思路:本题练习递归及其优化。解法一:对于每个节点,递归的遍历其子节点。(可想而知这样会有大量重复遍历)解法二:前缀和记录下根节点到正在访问的节点的前缀和,通过前缀和差值求满足条件的个数。复杂度降到O(N)。注意:要注意传到Java函数中的变量什么时候会改变什么时候不会改变,对于基本数据类型来说,当函数退出,其值一定跟原来是一样的不会改变。代码:解法一/** * Definition fo原创 2022-03-13 15:08:21 · 425 阅读 · 0 评论 -
力扣 二叉树的层序遍历
题目:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/需要注意的点:Java的Queue相关的内容,例如,实例化时其引用一般是指向LinkedList对象,还有offer(),peek(),poll(),isEmpty()方法。代码:一个是加了个flag节点标记;一个是记录size/** * Definition for a binary tree node. * public class TreeNode原创 2022-03-01 14:56:37 · 325 阅读 · 0 评论 -
力扣 最大子数组和
题目:https://leetcode-cn.com/problems/maximum-subarray/思路:动态规划的思想,dp[i]表示以i为结束的数据的最大子数据和。则:dp[0] = nums[0]dp[i] = max(dp[i-1] + nums[i], nums[i])最大值即最大的dp[i]代码:class Solution { public int maxSubArray(int[] nums) { int res = nums[0];原创 2022-02-18 20:55:59 · 207 阅读 · 0 评论 -
力扣 合并两个有序链表
题目:https://leetcode-cn.com/problems/merge-two-sorted-lists/思路:设定一个哨兵节点 listResult ,可以在最后返回合并后的链表.代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val原创 2022-02-17 21:45:00 · 177 阅读 · 0 评论 -
力扣 两数之和
题目:https://leetcode-cn.com/problems/two-sum/解题思路:最笨的方法:两个for,时间复杂度较高。O(N)的方法:使用哈希映射,求是否存在target - x。一个需要注意的点:要注意数组元素不应该与其自身匹配,所以先进行匹配再将元素放入HashMap中,不要全放入再匹配。代码:class Solution { public int[] twoSum(int[] nums, int target) { int[] res = ne原创 2022-02-15 17:50:44 · 229 阅读 · 0 评论 -
力扣 无重复字符的最长子串
题目:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。解题思路:采用动态规划解法,dp[i]表示[0, i]这个区间,以s[i]为结尾的的最长子串的长度。那么dp[0] = 0, 只有一个字符时肯定不重复。从 i = 1 开始,遍历算dp[i], 有以下两种可能:①如果字符s[i]之前没有出现过,那么dp[i] =原创 2022-01-10 12:57:33 · 217 阅读 · 0 评论 -
力扣 构造 K 个回文字符串
题目:https://leetcode-cn.com/problems/construct-k-palindrome-strings/给定一个字符串s,一个整数k,问能否使用s中的所有字符构造出k个回文字符串。解题思路:如果字符串s长度小于k,则一定不能构造k个回文。因为最多是让每个字符当作一个回文串,这样也比k小。如果字符串s中奇数个字符的数量比k大,那使用s中的所有字符构造出来的回文串的数量一定比k大,因为最小的情况就是让这些奇数字符做为回文串的中心位置。除了以上两种情况,其他情况都可行。原创 2022-01-06 18:10:43 · 2496 阅读 · 0 评论 -
力扣 Pow(x,n)
题目:https://leetcode-cn.com/problems/powx-n/给定x和n,求x的n次方。快速幂的题目,利用递归快速求解。class Solution { public double myPow(double x, int n) { if(n > 0){ return quickMul(x, n); }else { return 1.0 / quickMul(x, n);原创 2022-01-06 01:13:50 · 99 阅读 · 0 评论 -
力扣 超级次方
题目:https://leetcode-cn.com/problems/super-pow/submissions/给一个整数a,一个非常大的整数b,b用数组形式给出,求a的b次方对1337取余。用到取余的分配率。把a的b次方用数学公式分解。递推求解。class Solution { public int superPow(int a, int[] b) { int m = b.length; int ans = pow(a, b[m-1], 1337);原创 2022-01-06 01:13:00 · 3223 阅读 · 0 评论