算法
执笔论英雄
这个作者很懒,什么都没留下…
展开
-
整数拆分(动态规划,背包+递规)
问题描述来源关于这个问题的解第一个问题:参考:第一个讲得好的原创 2020-04-06 15:36:50 · 148 阅读 · 0 评论 -
最大流--Ford-Fulkerson algorithm
笔记素材来源国科大卜东波老师最大流其中一种解法是将其写成线性规化最后跑内点法便可以求出先找初始解,然后进行改进,如果足够好,停止改进初始解:设为零值流那么如何改进呢,先找一个零值流,然后循坏找一条可行路径,并对其增流。如左图,便是上述算法的执行结果,但失败地没有找到最大流,如何解决?如图红色线所示出现错误的原因是,红色线不应该运(初始路径p不合适),那么就让红色的退回去1...原创 2020-04-01 13:08:48 · 737 阅读 · 1 评论 -
49. 字母异位词分组
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明: 所有输入均为小写字母。 不考虑答案输出的顺序。class Solutio...原创 2019-12-06 21:21:38 · 76 阅读 · 0 评论 -
290. 单词规律
给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。示例1:输入: pattern = "abba", str = "dog cat cat ...原创 2019-12-06 20:34:42 · 109 阅读 · 0 评论 -
POJ2431 expedition(贪心系列)
原创 2019-12-06 08:49:13 · 90 阅读 · 0 评论 -
Assign banana to monkeys(贪心系列)
Problem description:There are N Monkeys and N bananas are placed in a straight line. Each monkey want to have a banana, if two monkeys want to own the same banana, there will be a fight! A monkey can...原创 2019-11-28 11:43:34 · 896 阅读 · 0 评论 -
B. Best Time to Buy and Sell Stocks(贪心系列)
Problem DescriptionSay you have an array for which the ith element is the price of a given stock on day i. Design an algorithm to find the maximum profit. You may complete as many transactions as you...原创 2019-11-28 10:48:44 · 98 阅读 · 0 评论 -
A. Monkeys and Bananas(贪心系列)
Problem DescriptionGiven an array of size n that has the following specifications:Each element in the array contains either a monkey or a banana.Each monkey can eat only one banana.A monkey cannot ...原创 2019-11-28 10:08:34 · 686 阅读 · 0 评论 -
leetcode 881. Boats to Save People(贪心)
The i-th person has weight people[i], and each boat can carry a maximum weight of limit.Each boat carries at most 2 people at the same time, provided the sum of the weight of those people is at ...原创 2019-11-26 19:49:49 · 138 阅读 · 0 评论 -
45. 跳跃游戏 II(贪心)
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位...原创 2019-11-26 09:58:41 · 88 阅读 · 0 评论 -
55. 跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释:...原创 2019-11-25 20:05:54 · 91 阅读 · 0 评论 -
55. 跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释:...原创 2019-11-25 20:05:51 · 108 阅读 · 0 评论 -
Leetcode 1257:最小公共区域
给你一些区域列表 regions ,每个列表的第一个区域都包含这个列表内所有其他区域。很自然地,如果区域 X 包含区域 Y ,那么区...原创 2019-11-23 19:49:49 · 219 阅读 · 0 评论 -
127. 单词接龙
给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则: 每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。说明: 如果不存在这样的转换序列,返回 0。 所有单词具有相同的长度。 所有单词只由小写字母组成。 字典中不存在重复的单词。...原创 2019-11-19 16:40:14 · 94 阅读 · 0 评论 -
1. Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the same e...原创 2019-11-19 10:10:22 · 76 阅读 · 0 评论 -
91. Decode Ways
A message containing letters from A-Z is being encoded to numbers using the following mapping:'A' -> 1'B' -> 2...'Z' -> 26Given a non-empty string containing only digits, determine the ...原创 2019-11-14 14:38:04 · 107 阅读 · 0 评论 -
jjj
思路:看到括号匹配,第一个想到的应该就是栈。因为这道题需要统计最长有效括号子串的长度,所以拿下标来做最好。也就是在栈里存储下标。只有两种字符,分两种情况:遇到‘(’,直接把对应的下标push到栈中;因为‘(’是不能匹配弹出字符的,括号只有右括号才能标识一个完整的括号喔!遇到‘)’:弹出栈顶的下标检测栈是否为空,如果为空,将当前‘)’的下标push进入栈中,然后continue;栈不...原创 2019-11-10 23:30:01 · 71 阅读 · 0 评论 -
516. Longest Palindromic Subsequence
Given a string s, find the longest palindromic subsequence's length in s. You may assume that the maximum length of s is 1000.Example 1:Input: "bbbab"Output: 4One possible longest palindromi...原创 2019-11-10 22:27:22 · 73 阅读 · 0 评论 -
647. Palindromic Substrings
Given a string, your task is to count how many palindromic substrings in this string.The substrings with different start indexes or end indexes are counted as different substrings even they consist o...原创 2019-11-10 21:00:46 · 80 阅读 · 0 评论 -
Longest common subsequence
Problem DescriptionGiven two sequences, find the length of the longest common subsequence (LCS). A subsequence is different from a substring, for the former need NOT be consecutive of the original s...原创 2019-11-09 21:01:06 · 187 阅读 · 0 评论 -
120. 三角形最小路径和
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n)&nbs...原创 2019-11-09 20:23:22 · 86 阅读 · 0 评论 -
337. 打家劫舍 III
在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入: [3,2,3,n...原创 2019-11-09 15:53:14 · 75 阅读 · 0 评论 -
背包问题-笔记整理
本文为个人笔记,这算是我第三次系统的学背包问题。根据老师所写课件,所记为个人感悟以及知识点梳理,方便日后复习,如有不足之处请斧正,感谢。1.背景:1.1 什么是背包问题:背包问题指这样一类问题,题意往往可以抽象成:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物...转载 2019-11-07 14:42:26 · 131 阅读 · 0 评论 -
0/1背包二维费用---国科大卜东波老师算法作业
#include <iostream>using namespace std;#include<algorithm>const int N = 100;int Memo[N];int Disk[N];int User[N];int dp[101][101][101];int main(){ int M,N,K; cin >> M>...原创 2019-11-07 14:05:30 · 405 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔...原创 2019-11-07 10:56:20 · 104 阅读 · 0 评论 -
121. 买卖股票的最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...原创 2019-11-06 17:31:55 · 72 阅读 · 0 评论 -
518. 零钱兑换 II
给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。 示例 1:输入: amount = 5, coins = [1, 2, 5]输出: 4解释: 有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+1示例 2:输入: amount = 3, coins = [2]输出: 0解释...原创 2019-11-05 21:21:04 · 286 阅读 · 0 评论 -
322. 零钱兑换
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1传送门二维数组动态规化class Solution {public: ...原创 2019-11-05 20:50:27 · 102 阅读 · 0 评论 -
21. Merge Two Sorted Lists
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.Example:Input: 1->2->4, 1->3->4Output: 1->...原创 2019-10-07 19:52:10 · 91 阅读 · 0 评论 -
17. 电话号码的字母组合
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。递规实现(c++代码)class Solution { //s中保存了此时从digits[0.....原创 2019-08-05 20:08:16 · 70 阅读 · 0 评论 -
51. N皇后
皇后问题研究的是如何将 n个皇后放置在 n*n 的棋盘上,并且使皇后彼此之间不能相互攻击。示例:给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例:输入: 4输出: [ [".Q..", // 解法 1 "...Q", "Q....原创 2019-07-31 19:13:59 · 90 阅读 · 0 评论 -
最长公共子序列
翻译 2019-08-04 19:02:52 · 77 阅读 · 0 评论 -
416.分割等和子集
解题思路1. 递规实现(自顶向下)class Solution {private: //考虑[0...index]能否恰好放入容量为sum的背包中 bool tryPartition(const vector<int>&nums,int index,int sum){ if(sum==0) return true...原创 2019-08-04 12:08:55 · 221 阅读 · 0 评论 -
动态规划之0-1背包问题
解题思路1. 递 规(自顶向下)#include<vector>using namespace std;class Knapsacko1 {private://用[0...index ]的物品,填充容积为c 的背包的最大价值 int bestValue(const vector<int>&w,const vector <int&g...原创 2019-08-03 19:42:39 · 183 阅读 · 0 评论 -
198. 打家劫舍
解题思路 1. 递规树的结构从图中可以发现,可以将该问题转化为考虑抢劫[index,n-1]这样的子问题,具体的状态及状态转移方程如下图所示。f(0)表示考虑偷取[0...n-1]的方房子,v[0]表示偷取0号房子,接下来只能考虑偷取[2...n-1]的房子。 2.递规C++ 代码实现class Solution {private: //考虑抢劫nums[in...原创 2019-08-03 17:07:03 · 158 阅读 · 0 评论 -
198. 打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号...原创 2019-08-03 17:01:39 · 67 阅读 · 0 评论 -
343整数拆分
版权声明:本文为博主原创文章,...原创 2019-08-03 11:15:19 · 280 阅读 · 0 评论 -
435. 无重叠区间
给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。123示例 2:输入: [ [1,2], [1,...原创 2019-08-02 18:09:34 · 101 阅读 · 0 评论 -
leetcode 参考
https://blog.csdn.net/qq_17550379/article/details/82930991https://blog.csdn.net/wchzh2015/article/details/90318652原创 2019-08-02 18:07:07 · 120 阅读 · 0 评论 -
二叉搜索树与 双向链表
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。设计思想首先,我们知道:在二叉树中,每个结点都有两个指向子结点的指针。在双向链表中,每个结点也有两个指针,它们分别指向前一个结点和后一个结点。其次,由于要求转换之后的链表是排好序的,我们可以中序遍历树中的每一个结点,这是因为中序遍历算法的特点是按照从小到大的顺...原创 2019-07-30 12:52:50 · 121 阅读 · 0 评论