![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
文章平均质量分 87
盛夏与微风
要加油哦
展开
-
拓扑排序入门和算法题模板
概念拓扑排序:在有向图中,将节点进行排序,使得后面的节点不会指向前面节点。如果最后有节点指向前面,表示图有环,不存在拓扑排序。算法模板拓扑算法常用来解决优先度限制下的调度问题,如:先统计所有节点的入度,删除入度为0的节点,然后把这个节点指向的节点的入度减一,一直做改操作,直到所有的节点都被分离出来,如果最后存在入度不为0的节点,则表示有环。1.计算每个节点的入度,使用数组保存;2...原创 2019-08-23 09:22:57 · 477 阅读 · 0 评论 -
权重随机算法的java实现
1.概述权重随机算法就是给出一系列数据的权重,需要随机选择其中的数据,出现的概率与数据对应的权重一致,如负载均衡,广告投放。通用解法时累积每个元素的权重,组成新的数组,然后在权重总和范围内产生一个随机数,落到哪个区间就对应哪个元素。如四个元素A/B/C/D,对应权重为1/3/5/6,随机选出数据的概率为1:3:5:6,我们对每个元素的权重进行累加,得到[1,4,9,15],所以产生一个在1到...原创 2019-08-17 10:46:58 · 605 阅读 · 0 评论 -
字符串回溯算法题模板
这个模板适用于给出一个字符串,然后从字符串中判断其子字符串是否满足某一性质。比如:93. 复原IP地址题目给出一个字符串,需要求出所有可能的 IP 地址格式。131. 分割回文串题目给出一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。306.累加数累加数是一个字符串,组成它的数字可以形成累加序列。一个有效的累加序列必须至少包含 3 个数。除了最开始的两个数以外,字符串中...原创 2019-08-12 13:14:09 · 660 阅读 · 0 评论 -
01背包、完全背包、多重背包模板
三种背包概念01背包(ZeroOnePack): 有N件物品和一个容量为V的背包。每种物品均只有一件。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。完全背包(CompletePack): 有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总...原创 2019-08-24 15:31:00 · 376 阅读 · 0 评论 -
Leetcode二叉树后续遍历系列题总结
这种类型的题写得我头有点疼,总结一下以便复习。这些题的特点是自底向上进行遍历,左右子树和根节点往往会对结果值有两种影响,一般是包括根节点和不包括根节点的情况,最后求出此树对下一次遍历的影响,直到遍历结束。总之就是考虑两件事:1.当前根节点对最终结果有什么影响2.这次递归能给下次递归做出什么贡献124. 二叉树中的最大路径和题目链接题目:给定一个非空二叉树,返回其最大路径和。本题中...原创 2019-07-17 22:58:20 · 649 阅读 · 0 评论 -
leetcode——回溯算法题目合集
回溯算法简介回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。许多复杂的,规模较大的问题都可以使用回溯法...原创 2019-05-17 14:47:46 · 1140 阅读 · 0 评论 -
leetcode——“数组”题目合集
1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思路...原创 2019-05-09 10:30:21 · 1430 阅读 · 0 评论 -
leetcode——"树"题目集合
96.不同的二叉搜索树题目:给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 ...原创 2019-04-16 22:45:22 · 588 阅读 · 0 评论 -
使用递归和非递归方法实现二叉树的三种遍历
前序遍历:每个树的遍历顺序为:根节点→左节点→右节点。上图的前序遍历输出为:FCADBEHGM中序遍历:每个树的遍历顺序为:左节点→根节点→右节点。上图的前序遍历输出为:ACBDFHEMG后序遍历:每个树的遍历顺序为:左节点→右节点→根节点。上图的前序遍历输出为:ABDCHMGEF1.前序遍历递归法/** * Definition for a binary tree node...原创 2019-04-15 19:27:44 · 721 阅读 · 0 评论 -
leetcode链表习题总结
1.链表题中经常给链表添加一个假头,使得头结点也能受到检查 2.链表的遍历通常设定一个指针指向头部,然后遍历直至指针指的结点不为NullListNode cur = head;while(cur != null){ .... cur = cur.next;}3.删除结点操作:构建两个指针,一个指针遍历链表,另一个指针紧跟后面进行删除操作ListNode fakeHead =原创 2017-10-13 10:48:18 · 2272 阅读 · 0 评论 -
在算法中使用状态机
今天看到了一道有意思的解法,记录一下。题目如下:leetcode 376.摆动序列分析一下[1,17,5,10,13,15,10,5,16,8],对于前3个元素是满足摆动序列要求的,而对于第4到6个元素,均为递增,所以摆动序列有以下几种情况:[1,17,5,10…][1,17,5,13…][1,17,5,15…]关于第四个元素的选择,可以使用贪心思想,让第四个元素尽可能的大,这样和第...原创 2019-09-06 10:44:00 · 1457 阅读 · 0 评论