
算法
文章平均质量分 54
「已注销」
这个作者很懒,什么都没留下…
展开
-
动态规划算法
动态规划算法适用于有重叠子问题和最优子结构性质的问题。解完几道题目后,再回头读这句话会发现这总结真是精辟。实际操作过程中,怎么拆解也非常重要。多练,出感觉。另外,此类题要敢于设置变量。比如题目一的minprice和maxprofit以下两道题目均出自leetcode。题目一:买卖股票的最佳时机给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所原创 2021-11-14 00:15:23 · 408 阅读 · 0 评论 -
【JAVA】每日两道算法题
LeetCode101 对称二叉树题目:给定一个二叉树,检查它是否是镜像对称的。// 二叉树 [1,2,2,3,4,4,3] 是对称的 1 / \ 2 2 / \ / \ 3 4 4 3 / \ / \ / \ / \5 6 7 8 8 7 6 5标签:递归、迭代思路一:递归根节点比较特殊,单独拿出来。如果根节点不为null,比较左子树和右子原创 2020-10-14 13:51:33 · 124 阅读 · 0 评论 -
【JAVA】每日两道编程题0930_LeetCode24 反转链表
LeetCode24 反转链表定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL标签:栈、递归、双指针思路一:反转链表的常规解法:用栈存储链表的值,然后取出。但这种解法的时间和空间复杂度均达不到标准。代码实现:import java.util.List;import java.util.Stack;//链表原创 2020-09-30 17:02:34 · 204 阅读 · 0 评论 -
【JAVA】每日两道算法题0929
LeetCode83 删除排序链表中的重复元素题目:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。输入: 1->1->2->3->3输出: 1->2->3标签:链表、 单指针思路:终止条件:代码实现LeetCode...原创 2020-09-29 18:40:12 · 116 阅读 · 0 评论 -
【JAVA】每日两道算法题0927
LeetCode697 数组的度题目:给定一个非空且只包含非负数的整数数组 nums, 数组的度的定义是指数组里任一元素出现频数的最大值。找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。输入: [1,2,2,3,1,4,2]输出: 6标签:数组思路:根据题意,对于数组中的每一个值,需要存储:第一次出现的位置(即下标),最后一次出现的位置(即下标),出现的次数。所以选择哈希表来存储,key为数组中的每一个值,value存储下标或次数。遍历数组第一次出现的位置:原创 2020-09-27 15:49:11 · 185 阅读 · 0 评论 -
【JAVA】每日两道算法题0925_双指针+递归
算法LeetCode38 外观数列LeetCode38 外观数列题目:给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。整数序列中的每一项将表示为一个字符串。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1. 12. 113. 214. 12115. 111221标签:字符串、递归、双指针思路:1.第n项是对第n-1项的描述。故先获取第n-1项。(递归法)2.描述方法:使用原创 2020-09-25 15:04:54 · 295 阅读 · 1 评论 -
【JAVA】面试须知的五种排序算法0917_思路及实现(所有代码亲测可用)
1.冒泡排序图片来源:https://www.cnblogs.com/guoyaohua/p/8600214.html冒泡排序:1.循环n次,每次循环获取最大值,放在最后。2.一次比较两个元素,如果它们的顺序错误就把它们交换过来。3.循环class Solution { public int[] bubbleSort(int[] arr) { int n = arr.length; if (n == 0) {return arr;} /*循环n次,依次将最大、第二、第三放在数组的原创 2020-09-17 18:45:39 · 284 阅读 · 0 评论 -
【JAVA】每日两道算法题0916_链表、递归
文章目录LeetCode21LeetCode334递归递归三要素:斐波那契数列99乘法表LeetCode21题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。标签:链表、递归思路:1.新的链表不需要重新定义,因为链表的插入是非常方便的。2.如果l1或者l2为空链表,不需要合并,直接返回另一个链表。代码实现://递归实现class Solution { public ListNode mergeTwoLists(ListNode l原创 2020-09-16 15:53:40 · 159 阅读 · 0 评论 -
【JAVA】每日两道算法题0915_栈、字符串处理
题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。来源:力扣(LeetCode)有效字符串需满足:1.左括号必须用相同类型的右括号闭合。2.左括号必须以正确的顺序闭合。3.空字符串可被认为是有效字符串。标签:栈思路:1.当字符串长度为奇数时,返回false;2.前面一直是左括号时,需要一个数据结构暂存这些等着被匹配的左括号。当右括号出现时,这些暂存的左括号以“后进先出”的方式被匹配。所以用“栈”这种数据结构去暂存等着被匹配的左括号。3原创 2020-09-16 14:05:20 · 188 阅读 · 0 评论 -
【JAVA】每天两道算法题0910_双指针,滑动窗口。
这里写自定义目录标题题目来源:LeetCode给定一个字符串,请找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pw原创 2020-09-10 17:50:01 · 1535 阅读 · 0 评论 -
【JAVA】每日两道算法题0909_Hash、链表
什么时候考虑用哈希法:当我们需要快速查找一个元素是否出现集合里时。牺牲空间换取时间的做法, 需要额外的数组、set、map来存放数据。哈希表哈希函数哈希碰撞拉链法线性探测法常见的三种哈希结构当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构。数组set (集合)map(映射)二叉搜索数(有序排列树)和红黑树链表...原创 2020-09-09 20:33:34 · 726 阅读 · 0 评论