基础算法
Sophie1797
从二流全栈转二流数据然后又转回了全栈
展开
-
饭后小甜点leetcode——动态规划
Dynamic ProgrammingProblem Summary最大连续子序列和dp[i]dp[i]dp[i]表示以A[i]A[i]A[i]作为末尾的连续序列的最大和dp[i]=max{A[i],dp[i−1]+A[i]} dp[i] = max\{A[i], dp[i-1]+A[i]\} dp[i]=max{A[i],dp[i−1]+A[i]}边界dp[0]=A[0] dp[0...原创 2019-05-06 23:20:34 · 161 阅读 · 0 评论 -
leetcode——卖股票系列
只能交易一次121. Best Time to Buy and Sell Stockpublic int MaxProfit(int[] prices){ if (prices == null || prices.Length == 0) { return 0; } var b = prices[0]; var maxSoFar = 0...原创 2019-08-06 10:59:29 · 2208 阅读 · 0 评论 -
饭后小甜点leetcode——滑动窗口
文章目录求定长平均值最大的子数组简介滑动窗口是一种比喻的说法,就是在数组中,定长子数组不断向后更新,对于每个i开头的窗口,它的最后一个元素是i+k-1,其中k是窗口大小,也就是子数组长度,每次从i-1到i的更新,就是把i+k-1加入到窗口中,把i-1从窗口中移除,如下图所示。下面总结了一下滑动窗口常见的题型。求定长平均值最大的子数组//滑动窗口public double FindMa...原创 2019-07-20 15:23:36 · 140 阅读 · 0 评论 -
饭后小甜点leetcode——子数组系列
文章目录求最大/小子数组和/积求最大子数组和求最大子数组乘积用滑动窗口求和为k的子数组在数组这儿的题中,发现有很多很多题都跟子数组有关,现总结一下子数组相关题型。求最大/小子数组和/积这种题一般用DP解决比较方便,dp数组中保存以i为结尾的子数组的和/积求最大子数组和leetcode题目地址很基础的DPpublic int MaxSubArray(int[] nums){ ...原创 2019-07-20 18:37:47 · 150 阅读 · 0 评论 -
leetcode——背包系列
文章目录01背包零钱兑换(每种硬币只有一个)完全背包问题零钱兑换II(每种硬币无限个)组合总和IV本来背包问题,比较直观的解释,是用二维的转移方程,但简洁起见,很多地方以及下文的介绍都是用一维的转移方程,在二维到一维的转换中要注意,01背包和完全背包的计算顺序,01背包的dp数组是从后向前计算更新,完全背包的dp数组是从w[i]开始向后更新。要想理解计算顺序的不同,先看一下二维的转移方程是什么...原创 2019-07-20 23:59:00 · 2721 阅读 · 1 评论 -
饭后小甜点leetcode——k数之和系列
文章目录两数之和两数之和两数之和 II - 输入有序数组两数之和 III - 数据结构设计两数之和 IV - 输入 BST小于 K 的两数之和三数之和三数之和较小的三数之和最接近的三数之和四数之和四数之和N数之和和为k的子数组连续的子数组和和可被 K 整除的子数组乘积小于K的子数组两数之和两数之和leetcode题目链接【知识点】:HashTable【思路】:从左向右扫描nums数组,每...原创 2019-07-21 21:57:23 · 1091 阅读 · 2 评论 -
leetcode——网格DP系列
不同路径【题目】一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?【说明】m 和 n 的值均不超过 100。【链接】https://leetcode-cn.com/pr...原创 2019-08-06 10:51:20 · 778 阅读 · 0 评论 -
leetcode——序列类DP
文章目录House robber打家劫舍(一排房子)打家劫舍(一圈房子)打家劫舍(二叉树型房子分布)Paint house粉刷房子(三种颜色)粉刷房子(k种颜色)Decode way解码方法(只有1-9)解码方法(还有通配符*号)最长连续递增序列(连续)LIS最长上升子序列(可以不连续)俄罗斯套娃信封问题(类LIS)比特位计数(bit+dp)序列型dp问题关键在于,dp[i]表示前i个item的...原创 2019-08-06 13:51:32 · 351 阅读 · 0 评论 -
leetcode——区间类DP
文章目录最长回文子序列最长回文串最长回文子串回文子串最长回文子序列dp[i][j]={dp[i+1][j−1]+2, S[i]==S[j] max{dp[i+1][j],dp[i,j−1]}, S[i]!=S[j] dp[i][j]= \begin{cases} dp[i+1][j-1]+2,\ S[i]==S[j]\\ \ max\{dp...原创 2019-08-06 18:11:56 · 628 阅读 · 0 评论 -
leetcode——博弈类DP
文章目录Nim 游戏预测赢家Nim 游戏你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;因为无论你拿走...原创 2019-08-06 18:13:16 · 759 阅读 · 0 评论 -
leetcode——双序列DP系列
文章目录最长公共子序列交错字符串编辑距离最长公共子序列leetcode好像没有这个题,取lintcode找了一个,结果不能用C#。。。于是写出了时隔N年的第一段Java代码。。public int longestCommonSubsequence(String A, String B) { // write your code here int m = A.length();...原创 2019-08-07 00:28:53 · 253 阅读 · 0 评论 -
leetcode——划分DP系列
文章目录完全平方数分割回文串 II分割回文串完全平方数给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.链接:https://leetcode-c...原创 2019-08-07 00:38:18 · 227 阅读 · 0 评论 -
饭后小甜点leetcode——分治算法
文章目录归并寻找两个有序数组的中位数合并K个排序链表快排数组中的第K个最大元素最接近原点的 K 个点归并寻找两个有序数组的中位数public class Solution { public double FindMedianSortedArrays(int[] nums1, int[] nums2) { var m = nums1.Length; va...原创 2019-08-07 08:38:40 · 253 阅读 · 0 评论 -
饭后小甜点leetcode——字符串中的算法
字符串和数组其实不分家的,很多算法都是需要相互转换或者是通用的,下面总结一些常见的字符串算法题型。字符串翻转翻转整个字符串344. 反转字符串【思路】两头逼近public void ReverseString(char[] s){ var i = 0; var j = s.Length - 1; while (i < j) { var te...原创 2019-06-24 23:55:54 · 163 阅读 · 0 评论 -
饭后小甜点leetcode——图的遍历
图的遍历一般有两种,DFS(深度优先搜索)和BFS(广度优先搜索),这两种基础的遍历上可以衍生出很多算法问题。DFS求无向图连通分量323. 无向图中连通分量的数目这道题就是DFS一个很基础的应用,求连通分量的个数,每轮dfs完了以后,该轮遍历到的节点都会被标为已访问,标不成的说明跟这个节点不连通,所以每轮dfs完成后,连通分量的count就可以加一了。【易错点】一个是建立邻接表的时...原创 2019-06-23 23:50:17 · 622 阅读 · 0 评论 -
饭后小甜点leetcode——通过前中后序遍历中的两种构造二叉树
文章目录普通二叉树前序+中序中序+后序前序+后序BST这个系列总结一下,给定前/中/后序遍历其中两个遍历的结果,要求构造出原二叉树,这种题。主要思路是用递归+分治普通二叉树前序+中序leetcode题目地址有以下两种方法传递inOrder的左右边界和preOrder的offset。offset是指从preOrder获取到的当前子树的根的下标(preOrder是先遍历根节点,所以对于...原创 2019-06-22 00:36:32 · 114 阅读 · 0 评论 -
饭后小甜点leetcode——二叉树
目录饭后小甜点leetcode——二叉树二叉搜索树98. Validate Binary Search Tree思路1思路2思路3饭后小甜点leetcode——二叉树二叉搜索树持续更新。。。98. Validate Binary Search TreeGiven a binary tree, determine if it is a valid binary search tree (B...原创 2018-11-05 23:30:07 · 144 阅读 · 0 评论 -
饭后小甜点leetcode——哈希表
目录饭后小甜点leetcode——哈希表242. Valid Anagram饭后小甜点leetcode——哈希表持续更新中。。。242. Valid AnagramGiven two strings s and t , write a function to determine if t is an anagram of s.Example 1:Input: s = “anagra...原创 2018-10-28 22:55:14 · 160 阅读 · 0 评论 -
饭后小甜点leetcode——堆
目录饭后小甜点leetcode——堆703. Kth Largest Element in a Stream饭后小甜点leetcode——堆持续更新。。。703. Kth Largest Element in a StreamDesign a class to find the kth largest element in a stream. Note that it is the kth...原创 2018-10-21 23:08:17 · 331 阅读 · 0 评论 -
饭后小甜点leetcode——回溯
基础版全排列:leetcode对应题目网址: https://leetcode.com/problems/permutations/description/代码:public class Solution { public IList&lt;IList&lt;int&gt;&gt; Result = new List&lt;IList&lt;int&gt;&g原创 2018-08-29 20:51:07 · 157 阅读 · 0 评论 -
剑指offer——按之字形顺序打印二叉树
牛客网地址: https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0?tpId=13&tqId=11212&tPage=3&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 对应le...原创 2018-08-29 20:33:42 · 90 阅读 · 0 评论 -
饭后小甜点leetcode——桶排序的应用
桶排序的应用前K个高频元素leetcode题目地址public IList<int> TopKFrequent(int[] nums, int k){ var res = new List<int>(); var dict = new Dictionary<int, int>(); var bucket = new List<...原创 2019-06-25 23:55:38 · 260 阅读 · 0 评论 -
饭后小甜点leetcode——数组中的算法
文章目录数组1. Remove掉符合条件的值移动零移除元素删除排序数组中的重复项(不允许任何重复)删除排序数组中的重复项(允许最多重复两遍)2. 数组中应用三路归并,快排,归排思想Color Sort无序数组(一维)中的第k大合并两个有序数组3. 数组与数学运算大数运算求统计量数组1. Remove掉符合条件的值这种题都是一个思路,一边遍历,一边用一个指针,指向满足要求的子数组的末尾移动零...原创 2019-06-26 00:02:44 · 205 阅读 · 0 评论 -
饭后小甜点leetcode——前缀树及其应用
前缀树前缀树的实现leetcode题目地址用数组实现public class Trie{ class TrieNode { public bool IsWord { get; set; } public TrieNode[] Children = new TrieNode[26]; } private TrieNode r...原创 2019-06-26 13:20:53 · 206 阅读 · 0 评论 -
饭后小甜点leetcode——恢复二叉树
有一种题,需要在遍历二叉树的时候,keep一个last指针,始终指向上一个遍历到的节点。恢复二叉树恢复二叉搜索树【思路】二叉搜索树在中序遍历的时候,得到的list应该如图中粉色点点那样递增,但如果其中有两个节点被放错地方了,则这两个节点则会像绿色点点一样,所以在第一次发现last节点比current节点大的时候,如果first节点还没有赋值过,则说明是图中第一个圈中的情况,然后把last...原创 2019-07-07 18:41:31 · 289 阅读 · 0 评论 -
饭后小甜点leetcode——设计题
DesignLRULFUAll O(1)原创 2019-06-26 22:23:41 · 206 阅读 · 0 评论 -
饭后小甜点leetcode——并查集
并查集概述并查集是一种用在图论中的数据结构,最主要的功能就是:查看两点是否相连。O(1)复杂度。就是看一下这两个节点的祖宗节点是不是同一个。合并两个点所在集合。O(logn)复杂度。就是让一个集合的祖宗节点成为另一个集合祖宗节点的父亲节点实现需要一个parent数组,记录每个节点的父亲节点可以加上路径压缩,也就是在find祖宗的时候顺路把祖宗变父亲节点,这样可以让树的层数减少,...原创 2019-06-23 23:23:21 · 129 阅读 · 0 评论 -
饭后小甜点leetcode——字符串模式匹配与表达式解析
文章目录模式匹配正则表达式匹配通配符匹配表达式解析字符串转换整数 (atoi)基本计算器基本计算器 II基本计算器 III逆波兰表达式求值为运算表达式设计优先级给表达式添加运算符三元表达式解析器删除注释迷你语法分析器Lisp 语法解析原子的数量模式匹配正则表达式匹配给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘...原创 2019-08-24 17:16:01 · 780 阅读 · 0 评论