leetcode
文章平均质量分 60
leetcode做题记录与心得
Re:FusE
普通人
展开
-
图灵leetcode真题解析
B站链接一、链表反转(206)解法一:迭代需要有三个变量分别来存储上一个元素的指针,当前元素的指针以及下一个元素的指针。以第一次反转为例, 第一步:先把当前元素的下一个元素指针存到next,这步只单纯为了备份当前的下一元素,即使第二步对curr.next进行修改也无妨,第四步就可以用到该备份的值。 第二步:把当前元素的的下一个元素指针置为上一个元素的指针, 第三步:把当前元素赋为上一元素。 ...原创 2021-08-16 00:20:26 · 375 阅读 · 0 评论 -
LeetCode动态规划简答题合集
一、爬楼梯(70)1.确定dp[i]的含义: 爬到第i层楼梯,有dp[i]种方法。2.确定递推公式:dp[i-1]向上一个台阶就是dp[i],dp[i-2]向上两个台阶也是dp[i],所以dp[i]=dp[i-1]+dp[i-2]。3.dp数组的初始化:dp[1] = 1,dp[2] = 24.确定遍历顺序:从dp[i]=dp[i-1]+dp[i-2]可以看出,一定是从前往后遍历。5.举例推导dp数组:当n=4时,结果应为5。dp[3]=dp[1]+d...原创 2021-08-14 23:33:13 · 226 阅读 · 0 评论 -
LeetCode树简单题合集(104、111、100、101、144、94、145)
一、104二叉树最大深度解法一:递归 public int maxDepth(TreeNode root) { if (root == null) { return 0; } int leftDepth = maxDepth(root.left); int rightDepth = maxDepth(root.right); return Math.max(leftDepth, right原创 2021-08-14 12:17:11 · 206 阅读 · 0 评论 -
LeetCode数组简单合集 (20)、(69)、(26)、(118、119)、(121、122)、88、136
一、有效的括号有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。解法一:栈(常规解法) public static boolean isValid(String s) { Stack<Character>stack = new Stack<Character>(); for(char c: s.toCharArray()){ if(c=='(')stack.push原创 2021-08-13 13:06:12 · 145 阅读 · 0 评论 -
LeetCode双指针合集 移除元素(27)、环形链表(141)、删除有序数组中的重复项(26)
一、移除元素最暴力的就是多余的元素直接删除,数组的元素在内存地址中是连续的,删除一个元素后面所有的元素都得前移动,很明显暴力解法的时间复杂度是O(n^2)。解法:双指针法(快慢指针法)通过一个快指针和慢指针在一个for循环下完成两个for循环的工作public static int removeElement(int[] nums, int val) { int j = 0; for(int i = 0;i < nums.length...原创 2021-08-13 00:55:37 · 140 阅读 · 0 评论 -
LeetCode两数之和(1)、整数反转(7)、回文数(9)
1.两数之和解法一:暴力解决由于数组已经是有序,所以j初始值为i+1。public static int[] twoSum(int[] nums, int target) { for (int i = 0; i < nums.length-1; i++) { for (int j = i+1; j < nums.length; j++) { if (nums[i] + nums[j] == target) {原创 2021-08-12 22:34:21 · 99 阅读 · 0 评论