数据结构和算法
NJUdudu
这个作者很懒,什么都没留下…
展开
-
[LeetCode] Permutation Sequence
The set[1,2,3,…,n]contains a total of n! unique permutations.By listing and labeling all of the permutations in order, We get the following sequence (ie, for n = 3):“123” “132” “213” “231” “3...原创 2018-09-05 20:55:15 · 166 阅读 · 0 评论 -
最小生成树——Kruskal算法和Prim算法
转载请注明出处:勿在浮沙筑高台http://blog.csdn.net/luoshixian099/article/details/51908175关于图的几个概念定义:连通图:在无向图中,若任意两个顶点vi” role=”presentation”>vivi都有路径相通,则称该无向图为连通图。强...转载 2018-05-02 19:49:26 · 198 阅读 · 0 评论 -
Dijkstra算法和Floyd算法—最短路径算法
原文链接:https://blog.csdn.net/jerry81333/article/details/54772709 Dijkstra算法又称迪杰斯特拉算法,是一个经典的最短路径算法,主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止,使用了广度优先搜索解决赋权有向图的单源最短路径问题,算法最终得到一个最短路径树。时间复杂度为O(N^2)执行动画:实例:...转载 2018-05-02 19:45:56 · 729 阅读 · 0 评论 -
编程之美:判断两链表是否相交
原文链接:https://blog.csdn.net/liuxialong/article/details/6556096 《编程之美》里面有一篇是讲如何判断两链表是否相交,读后觉得原文太过啰嗦。于是,笔者总结了一下,此类问题可以扩展为两大类,分别是:1、单链表与环问题http://blog.csdn.net/liuxialong/archiv...转载 2018-04-20 11:27:41 · 117 阅读 · 0 评论 -
leetcode -- Minimum Window Substring
Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n).For example, S = “ADOBECODEBANC” T = “ABC”Minimum window is “BANC”.N...原创 2018-05-01 17:13:31 · 155 阅读 · 0 评论 -
螺旋矩阵实现
原文链接:https://blog.csdn.net/yanerhao/article/details/44964561 比如N=4的矩阵:1 2 3 4 —-a排12 13 14 511 16 15 610 9 8 7 ——-c排| |d排 b排 首先确定的是需要一个二维数组ar[N][N]接收,N=4,则有两圈,外一圈从1–12;内一...转载 2018-04-23 23:29:08 · 199 阅读 · 0 评论 -
decode-ways
A message containing letters from A-Z is being encoded to numbers using the following mapping:‘A’ -> 1 ‘B’ -> 2 … ‘Z’ -> 26 Given an encoded message containing digits, determine the tot...原创 2018-04-19 17:15:15 · 1019 阅读 · 0 评论 -
复原IP地址
Given a string containing only digits, restore it by returning all possible valid IP address combinations.For example: Given “25525511135”,return [“255.255.11.135”, “255.255.111.35”]. (Order does...原创 2018-04-19 12:16:10 · 2278 阅读 · 0 评论 -
搜索二叉树的所有构建情况
原文链接:https://blog.csdn.net/chilseasai/article/details/50083201 题目链接:https://leetcode.com/problems/unique-binary-search-trees-ii/题目:Given n, generate all structurally un...转载 2018-04-19 10:27:04 · 263 阅读 · 1 评论 -
Best Time to Buy and Sell Stock IV
复杂度 时间 O(Nk) 空间 O(Nk)思路 我们将第i天已经执行j笔交易的最大收益作为全局变量global,将第i天正好完成第j笔交易的最大收益作为局部变量local。对于global,也就是我们要知道第i天已经执行j笔交易的最大收益,可以基于第i-1天已经执行j笔交易的最大收益和第i天正好完成第j笔交易的最大收益,即globali = max(globali-1, locali)...原创 2018-04-12 19:31:07 · 121 阅读 · 0 评论 -
最长回文子串
原文链接:https://www.cnblogs.com/xiuyangleiasp/p/5070991.html 最长回文子串     给定一个字符串,求它的最长回文子串的长度。     回文串就是正着读和反着读都一样的字符串。分析与求解解法一 蛮力法  &转载 2018-04-22 15:10:15 · 141 阅读 · 0 评论 -
gray-code格雷码
题目: The gray code is a binary numeral system where two successive values differ in only one bit.Given a non-negative integer n representing the total number of bits in the code, print the sequence ...原创 2018-04-21 22:25:18 · 352 阅读 · 0 评论 -
两个大数string相加
string account(string num1, string num2){ if (num1.size()<num2.size()) { string temp = num1; num1 = num2; num2 = temp; } int length1 = num1.size(), length2 ...原创 2018-05-11 21:31:48 · 1942 阅读 · 0 评论 -
最大的矩形柱状图——leetcode84
原文链接:https://www.cnblogs.com/ganganloveu/p/4148303.htmlLargest Rectangle in HistogramGiven n non-negative integers representing the histogram’s bar height where the width of each bar is 1...转载 2018-04-27 15:12:36 · 156 阅读 · 0 评论 -
simplify-path_字符串分割题型
题目描述 Given an absolute path for a file (Unix-style), simplify it.For example, path =”/home/”, =>”/home” path =”/a/./b/../../c/”, =>”/c”click to show corner cases.Corner Cases:Did you ...原创 2018-05-07 17:51:20 · 159 阅读 · 0 评论 -
LeetCode72 Edit Distance
题目:Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)You have the following ...原创 2018-05-06 13:26:37 · 124 阅读 · 0 评论 -
最长无重复子串
Examples:Given “abcabcbb”, the answer is “abc”, which the length is 3.Given “bbbbb”, the answer is “b”, with the length of 1.Given “pwwkew”, the answer is “wke”, with the length of 3. Note that ...原创 2017-12-09 19:02:03 · 237 阅读 · 0 评论 -
求两个有序数组的中位数
There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).Example 1: nums1 = [1, 3]...转载 2017-12-17 20:47:53 · 228 阅读 · 0 评论 -
字符串的排列(全排列)
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。(可能有字符重复)思路:(1)把字符串分为两部分:一部分是字符串的第一个字符;第二部分是第一个字符以后的所有字符; (2)将第一个字符和它后面的所有不相等的字符逐个交换; (3)固定第一个字符,再对第二部分重复以上两步...原创 2018-03-19 14:26:59 · 762 阅读 · 0 评论 -
字符串的全组合
求出字符串的全部组合并按字典顺序输出,如abc的全组合为:a、b、c、ab、ac、bc、abc。 **思路一:利用递归** 在求n个字符长度为m的组合时,我们把这n个字符分成两部分:第一个字符和其余所有的字符。如果组合里包含第一个字符,则下一步在剩余n-1个字符里选出m-1个字符;如果组合里不包含第一个字符,则下一步在剩余n-1个字符里选出m个。也就是把求n个字符组成m的组合的问题...原创 2018-03-19 22:12:06 · 1108 阅读 · 0 评论 -
字符串距离—2018年美团编程题
题目描述:给出两个相同的由字符a和b构成的字符串,定义它们的距离为对应位置不同的字符的数量。如串“aab”与串“aba”的距离是2;串“ba”与串“aa”的距离是1;串“aba”与串”aba”的距离是0。下面给出两个字符串S和T,其中S的长度不小于T的长度。我们用|S|表示S的长度,用|T|表示T的长度,那么在S中一共有|S|-|T|+1个与T长度相同的子串,现在你需要计算T串与这些|S|-|T|...原创 2018-03-23 10:46:24 · 459 阅读 · 0 评论 -
数字字符—美团2018笔试题
题目描述: 在十进制表示中,任意一个正整数都是可以用字符’0’—‘9’表示出来。但是当’0’—‘9’这些字符每种字符的数量都是有限时,可能有些正整数就无法表示出来了。比如你有两个‘1’,一个‘2’,那么你能表示出11,12,121等等,但是你无法表示10,122,200等数。现在你手上拥有一些字符,它们都是’0’—‘9’的字符。你可以选出其中一些字符然后将它们组合成一个数字,那么你所无法组成的最...原创 2018-03-23 11:15:07 · 861 阅读 · 1 评论 -
字符串操作题—头条2018笔试
题目描述:定义两个字符变量:s和m,再定义两种操作,第一种操作:m=s;s=s+s;第二种操作:s=s+m;假设初始化如下:s=”a”; m=s;求最小的操作步骤数,可以将s拼接到长度等于n;解题思路: 求解最少次数拼接到长度为n,则需求m的最大值长度,最后的结果一定是m的倍数。 (1)当n为质数时,n无法进行质因数分解,故m最大长度只能为1,即只能进行...原创 2018-03-25 11:51:47 · 2198 阅读 · 0 评论 -
找出数组中没有出现的最小正整数
题目描述:给定一个无序整型数组arr,找到数组中未出现的最小整数 例子arr=[-1,2,3,4] return 1 arr=[1,2,3,4] return 5时间复杂度O(n) 空间复杂度O(1)解题思路:(1) arr为整数1,2,3…N的一个随机排列,那个未出现...原创 2018-04-24 17:45:16 · 11861 阅读 · 3 评论 -
多机器执行任务问题(贪心选择)— 腾讯笔试
题目: 有n个机器,m个任务,1<=n,m<=100000,每个机器都有工作时间的最大限制0< xi<1000和完成的最大难度0<=yi<=100,每个任务也有所需要的时间和难度,只要机器的时间大于等于任务,难度大于等于任务,该任务就可以被机器完成,每完成一个任务就可以得到200*xi+3*yi的money,问最多能有多少个任务被完成,并且保证完成任务数量最多...原创 2018-04-05 20:24:46 · 792 阅读 · 0 评论 -
字符串S中包含字符串T的所有不同的子序列
Given a string S and a string T, count the number of distinct subsequences of T in S.A subsequence of a string is a new string which is formed from the original string by deleting some (can be none)...原创 2018-04-17 20:33:13 · 2204 阅读 · 0 评论 -
牛牛的背包问题—网易互联网2018笔试
牛牛准备参加学校组织的春游, 出发前牛牛准备往背包里装入一些零食, 牛牛的背包容量为w。 牛牛家里一共有n袋零食, 第i袋零食体积为v[i]。 牛牛想知道在总体积不超过背包容量的情况下,他一共有多少种零食放法(总体积为0也算一种放法)。输入描述: 输入包括两行 第一行为两个正整数n和w(1 <= n <= 30, 1 <= w <= 2 * 10^9),表示零食...原创 2018-03-28 11:28:49 · 1564 阅读 · 2 评论 -
求字符串回文子序列的个数
转载 题意(事实上未曾找到相关题目):给定一字符串,求它的回文子序列个数。内容相同位置不同的子序列算不同的子序列。 例如字符串aba中,回文子序列为”a”, “a”, “aa”, “b”, “aba”,共5个。 字符串长度 s.length <= 50 思路:区间型DP, 先来说一下状态方程: 如求i到j这个区间共有多少回文子序列 ,两种情况①当s[i] == s[j]时,...转载 2018-04-09 23:11:27 · 1786 阅读 · 3 评论 -
牛牛下象棋—京东架构师笔试
题目:象棋中马走“日”字型,以棋盘的左下角为原点,向上为y轴正方向,建立坐标系。 牛牛想知道,棋盘左下角的马,进过K次移动之后,落在坐标(X, Y)的情况有多少种。当任意一次移动后马的位置不同时,两种情况被认为不同。结果取模1000000007。 其中K<= 100000, 0<=X<=8,0<=Y<=8。输入: 2 3 3 输出: 2分析:...原创 2018-04-09 22:52:49 · 323 阅读 · 0 评论 -
最少分发糖果数
题意:N个孩子站成一排,每个孩子分配一个分值。给这些孩子派发糖果,满足如下要求: (1).每个孩子至少一个 (2).分值更高的孩子比他的相邻位的孩子获得更多的糖果 求至少分发多少糖果?解题:先从左往右扫描,保证一个方向上相邻孩子分数更大的糖果更多;再从右往左扫描,保证另一方向上相邻孩子分数更大的糖果数更多 int candy(vector<int> &a...原创 2018-04-01 23:19:40 · 762 阅读 · 0 评论 -
数组中只出现过一次的数,其余均出现三次
链接: https://www.nowcoder.com/questionTerminal/1097ca585245418ea2efd0e8b4d9eb7a 来源:牛客网Single Number的本质,就是用一个数记录每个bit出现的次数,如果一个bit出现两次就归0,这种运算采用二进制底下的位操作^是很自然的。Single Number II中,如果能定义三进制底下的某种位操作,也可以...原创 2018-04-01 22:23:25 · 2254 阅读 · 0 评论 -
字符串能否由字典中单词组成—动态规划
给定一个字符串s和一个单词字典,确定是否可以将s分割成一个或多个字典单词的空格分隔的序列。 分析:用动态规划,dp[i]表示字符串s[0~i]是否可分的bool值。 bool wordBreak(string s, unordered_set<string> &dict) { int n = s.size(); vector<bo...原创 2018-04-01 18:09:35 · 4096 阅读 · 1 评论 -
单链表的插入排序
思路:新建一个链表头,遍历原链表,将每个节点加入新链表正确的位置。每一次寻找正确的新位置时,都需要从已排序新链表头结点开始遍历比较。#include <iostream>using namespace std;struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), nex...原创 2018-04-01 12:03:44 · 1523 阅读 · 0 评论 -
单链表归并排序——时间复杂度O(nlogn),空间复杂度O(1)
如果没有要求空间复杂度为O(1),可以遍历链表并将每个节点的值存入vector中,利用sort( )对vector排序后,最后再遍历一次链表,将排序后的vector中的元素依次赋给链表的节点值。时间复杂度O(nlogn),空间复杂度O(n)。 考点: 1. 归并排序O(nlogn);2. 快慢指针定位链表中间节点。复杂度分析: T(n) ...原创 2018-03-31 23:33:26 · 5136 阅读 · 0 评论 -
给定平面上的n个点,求最多有多少个点共线
给定一个二维平面上的n个点,找出同一条直线上的最大点数。 解法: 穷举,注意斜率不适用float作为键,精度损失。class Solution {public: int gcd(int x,int y) { //求最大公约数 if (y == 0) return x; else return gcd...原创 2018-03-31 16:38:05 · 5481 阅读 · 1 评论 -
二叉树最大路径
问题: Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree. For example: Given the below binary tree, 1 / \ 2 3 ...原创 2018-04-07 19:20:06 · 436 阅读 · 0 评论 -
被3整除—网易互联网2018笔试题
题目描述:给定一个数列:1,12,123,…,12345678910,1234567891011…,找出指定区间能被3整除的个数。输入描述:输入两个数字l和r,代表数列的第l个数和第r个数输入描述:输出区间内能被三整除的个数例: 输入:2 5输出:3因为12,123,1234,12345中能被3整除的有3个。分析: 一个数能被3整除的等价情况就是这个数的各个位上的数的和...原创 2018-03-27 23:15:11 · 767 阅读 · 0 评论 -
集合操作—今日头条2018笔试题
#include <vector>#include <iostream>#include <algorithm>#include<map>using namespace std;int fun(vector<int> a, vector<int> b, double sum1, double sum2){...原创 2018-03-25 13:25:55 · 706 阅读 · 0 评论 -
数组中所有和为num的组合—去哪笔试题
第一行输入数组个数n和总数num; 第二行输入数组的元素; 求数组中是否存在相加为num的组合,如果存在输出”perfect”,如果不存在输出“good”。 输入: 5 200 100 30 20 110 120 输出: good输入: 5 100 10 30 20 40 50 输出: perfect#include<iostream>#inc...原创 2018-04-02 18:27:47 · 1094 阅读 · 0 评论 -
回文最小分割数—动态规划
回文的最小分割数 1.minCut[i]表示从0到i最少回文切割数 2.dp[j][i]=true表示str[j..i]是回文 3.dp[j][i] = (s[i] == s[j] && (i - j < 2 || dp[j + 1][i - 1])) 4.minCut[i+1] = min(minCut[i+1], minCut[j] + 1);(j=< i ...原创 2018-04-04 20:29:39 · 736 阅读 · 0 评论