算法细节
Demon的黑与白
Stay hungry,Stay foolish
展开
-
算法细节系列(1):Java swap
算法细节系列(2):Java swap在Cpp中,swap算法可以用指针来实现,因此在Java中,如果采用如下代码来对两个数字进行交换时,也不会影响两个对象的值。原创 2016-11-13 13:36:05 · 2692 阅读 · 0 评论 -
算法细节系列(12):破除想当然
破除想当然总结最近遇到的一些有趣题。知识点主要有【动态规划】,【栈】,【数组】,【状态记录】,这些题目挺有趣,主要原因在于写程序时,需要破除想当然的人类求解过程,而是回归到低级的计算机思维,一步步教计算机怎么做。题目均摘自leetcode,分为以下三题(求面积系列)。84 Largest Rectangle in Histogram85 Maximal Rectangle221 Maximal原创 2017-04-26 19:39:52 · 833 阅读 · 0 评论 -
算法细节系列(20):Word Ladder系列
算法细节系列(20):Word Ladder系列 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode: 1. Leetcode 127: Word Ladder 2. Leetcode 126: Word Ladder IILeetcode 127: Word LadderProblem: Given two words (beginWord原创 2017-05-18 15:07:59 · 3168 阅读 · 1 评论 -
算法细节系列(25):加减乘除
算法细节系列(25):加减乘除 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode:Leetcode 227. Basic Calculator IILeetcode 150. Evaluate Reverse Polish NotationLeetcode 224. Basic CalculatorLeetcode 227. Basic C原创 2017-05-27 16:48:35 · 3675 阅读 · 0 评论 -
算法细节系列(27):时间复杂度为何还能优化?
算法细节系列(27):时间复杂度为何还能优化? 详细代码可以fork下Github上leetcode项目,不定期更新。以下题目非常有意思,乍一看它们的时间复杂度都是平方级的,但实际情况,却可以通过【动态数据结构】进行记忆优化降低时间复杂度,或者可以通过【分治手段】来降低时间复杂度。但为何复杂度就降低了?题目摘自leetcode:Leetcode 315. Count of Smaller N原创 2017-06-05 13:28:00 · 3331 阅读 · 0 评论 -
算法细节系列(21):贪心有理?
算法细节系列(21):贪心有理? 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode: 1. Leetcode 502: IPO 2. Leetcode 055: Jump Game 3. Leetcode 330: Patching Array刷完挑战,继续刷leetcode,遇到的第一个题就是IPO,而这恰巧是贪心系列,那就顺便把贪心给学了原创 2017-05-21 08:39:39 · 1317 阅读 · 0 评论 -
算法细节系列(28):线段树
算法细节系列(28):线段树 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode:Leetcode 307. Range Sum Query - MutableLeetcode 307. Range Sum Query - Mutable解法1这题的特色在于不断更新的nums[i],所以我们在用累加和进行求解时,每当update一次,都需要更新s原创 2017-06-05 18:44:37 · 2159 阅读 · 0 评论 -
算法细节系列(29):any sum
算法细节系列(29):any sum 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode:Leetcode 001. Two SumLeetcode 015. 3SumLeetcode 018. 4SumLeetcode 001. Two Sum头号种子啊,刷leetcode第一题就是它,带我入门带我飞。说说当初的思路吧,好幼稚。顺序遍历所有原创 2017-06-06 09:53:19 · 617 阅读 · 0 评论 -
算法细节系列(26):区间
算法细节系列(26):区间 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode:Leetcode 056. Merge IntervalsLeetcode 057. Insert IntervalLeetcode 352. Data Stream as Disjoint IntervalsLeetcode 056. Merge Interva原创 2017-06-02 09:25:55 · 756 阅读 · 0 评论 -
算法细节系列(22):什么时候贪心完!
算法细节系列(22):什么时候贪心完! 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode: 1. Leetcode 316: Remove Duplicate Letters 2. Leetcode 134: Gas Station 3. Leetcode 402: Remove K Digits 4. Leetcode 045: Jump原创 2017-05-22 13:28:55 · 753 阅读 · 0 评论 -
算法细节系列(30):接口设计
算法细节系列(30):接口设计 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode:Leetcode 380. Insert Delete GetRandom O(1)Leetcode 381. Insert Delete GetRandom O(1) - Duplicates allowedLeetcode 432. All O`one Da原创 2017-06-06 20:56:36 · 2744 阅读 · 0 评论 -
算法细节系列(31):链表
算法细节系列(31):链表 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode:Leetcode 206. Reverse Linked ListLeetcode 025. Reverse Nodes in k-GroupLeetcode 148. Sort ListLeetcode 082. Remove Duplicates from S原创 2017-06-07 18:28:20 · 807 阅读 · 0 评论 -
算法细节系列(32):有趣的数学
算法细节系列(32):有趣的数学 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode:Leetcode 335. Self CrossingLeetcode 273. Integer to English WordsLeetcode 166. Fraction to Recurring DecimalLeetcode 149. Max Poi原创 2017-06-08 20:47:48 · 739 阅读 · 0 评论 -
算法细节系列(33):再见字符串(1)
算法细节系列(33):再见字符串 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode:Leetcode 008. String to Integer (atoi)Leetcode 065. Valid NumberLeetcode 005. Longest Palindromic SubstringLeetcode 076. Minimum原创 2017-06-12 16:15:10 · 651 阅读 · 0 评论 -
算法细节系列(34):再见字符串(2)
算法细节系列(34):再见字符串(2) 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode:Leetcode 071. Simplify PathLeetcode 468. Validate IP AddressLeetcode 165. Compare Version NumbersLeetcode 068. Text Justificat原创 2017-06-13 10:00:37 · 645 阅读 · 0 评论 -
算法细节系列(35):不一样的排序
算法细节系列(35):不一样的排序 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode:Leetcode 215. Kth Largest Element in an ArrayLeetcode 324. Wiggle Sort IILeetcode 179. Largest NumberLeetcode 440. K-th Smallest原创 2017-06-14 20:09:58 · 766 阅读 · 0 评论 -
算法细节系列(10):503. Next Greater Element II
Next Greater Element 系列看了一些leetcode官方解和discuss,解释的不太满意,重新按照自己的思路梳理一遍,争取把它优化的过程阐述清楚。496. Next Greater Element IProblem: You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elem原创 2017-04-20 09:39:31 · 1550 阅读 · 0 评论 -
算法细节系列(18):凸包的三种计算
算法细节系列(18):凸包的三种计算 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode: 1. Leetcode 587. Erect the Fence刷一道周赛题时遇到了相关的凸包计算,特此整理下,方便日后复查。不得不吐槽下,网上有很多关于凸包的算法,但完整实现的却不多,所以本文借着leetcode提供的测试数据,把一些基本的凸包算法都实现下原创 2017-05-15 20:34:35 · 20622 阅读 · 7 评论 -
算法细节系列(19):广度搜索优先
算法细节系列(19):广度搜索优先 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode: 1. Leetcode 407: Trapping Rain Water II 2. Leetcode 310: Minimum Height Trees 3. Leetcode 130: Surrounded RegionsLeetcode 407 Tr原创 2017-05-16 17:27:11 · 558 阅读 · 0 评论 -
算法细节系列(3):梯度下降法,牛顿法,拟牛顿法
算法细节系列(3):梯度下降法,牛顿法,拟牛顿法迭代算法原型话不多说,直接进入主题。在我看来,不管是梯度下降法还是牛顿法,它们都可以归结为一个式子,即 x=ϕ(x) x = \phi(x) 也就是我们的不动点迭代法(fixed pointed iteration)最核心的迭代公式。神奇的式子,它该如何操作呢?用来干什么呢?不动点迭代法主要用于求解函数的零点。如求以下函数的零点, f(x)=x3原创 2016-12-16 09:17:14 · 10774 阅读 · 3 评论 -
算法细节系列(2):231.Power of Two && Three
算法细节系列(2):231.Power of Two && Three在刷leetCode时,遇到了一系列关于power of Number的问题,刚开始不以为然,以为用简单的递归就能求解,可直到看到power of three官方解时,才发现自己的渺小。它的思维深度和广度着实不是我等小菜能够比拟的,但我还是在其基础上强行解释了一些算法的核心思想。原创 2016-12-01 08:03:47 · 833 阅读 · 0 评论 -
算法细节系列(6):410. Split Array Largest Sum
410. Split Array Largest Sum这是一道颠覆我算法大厦的革命性题,它的求解思路对我来说非常独特,是一道值得深入研究探讨的题目,单独拿出来分析下,若有帮助甚好,来源于leetcode二分搜索系列。问题Problems Given an array which consists of non-negative integers and an integer m, you ca原创 2017-04-07 15:33:40 · 2695 阅读 · 0 评论 -
算法细节系列(7):354. Russian Doll Envelopes
354. Russian Doll Envelopes在做这道题之前,我们先来看一道它的简化版本300. Longest Increasing Subsequence,官网给出了两种解法,时间复杂度分别为O(n2)O(n^2)和O(nlogn)O(n \log n).Longest Increasing SubsequenceProblems: Given an unsorted array o原创 2017-04-08 00:16:54 · 1023 阅读 · 0 评论 -
算法细节系列(4):二分查找总结
二分查找刷题时,对二分查找的各种应用情况不太熟悉,严重影响了做题速度,特此总结下。在知乎上有一篇关于较全面的二叉查找,参考链接如下:【二分查找有几种写法?它们的区别是什么?】分类取整方式(2种) 向下取整向上取整区间开闭(4种) 左闭右闭左闭右开左开右闭左开右开问题类型(8种) 对于不下降序列a,求最小的i,使得a[i] = key对于不下降序列a,求最大的i,使得a[i] =原创 2017-04-05 20:41:07 · 3356 阅读 · 0 评论 -
算法细节系列(9):动态规划之01背包
动态规划本文参考《挑战程序设计竞赛》,通过01背包问题,引出动态规划,争取把它的原理阐述清楚,话不多说,直接开始吧。问题描述Problem: 给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装 入背包中物品的总价值最大?Example: 输入: n = 5 (w,v) = {(77,92),(22,22),(29,原创 2017-04-14 18:50:56 · 638 阅读 · 0 评论 -
算法细节系列(13):买卖股票
买卖股票该系列的题目意思很简单,但要在规定的时间复杂度内完成算法颇有难度。它有趣的地方在于它的解决思路,非常有趣。如果上一篇文章是为了破除想当然,那么这篇文章一定可以用异想天开来总结,我们一定得拎出一些核心的想法来引导算法。题目均摘自leetcode,分为以下五题(买卖股票系列)。121 Best Time to Buy and Sell Stock122 Best Time to原创 2017-04-30 23:13:50 · 9449 阅读 · 0 评论 -
算法细节系列(5):二分查找应用
二分查找应用题目来源于leetcode:https://leetcode.com/tag/binary-search/ ID Title Acceptance Difficulty 35 Search Insert Position 39.3% Easy35.Search Insert Position详见连接:https://leetcode.com/problem原创 2017-04-06 13:34:23 · 566 阅读 · 0 评论 -
算法细节系列(8):4. Median of Two Sorted Arrays
4 Median of Two Sorted Arrays这道题是我在做二分查找题目中最难的一道题,很大一部分原因在于它需要考虑的情况较多,真正理清所有情况,并准确写出答案相当有难度。问题Problems: There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median原创 2017-04-13 18:12:30 · 609 阅读 · 0 评论 -
算法细节系列(15):Valid Parentheses系列
算法细节系列(15):Valid Parentheses系列 详细代码可以fork下Github上leetcode项目,不定期更新。题目均摘自leetcode: 1. Leetcode 020: Valid Parentheses 2. Leetcode 022: Great Parentheses 3. Leetcode 241: Different Ways to Add Paren原创 2017-05-10 23:56:20 · 776 阅读 · 0 评论 -
算法细节系列(17):有向环检测&&拓扑排序
算法细节系列(17):有向环检测&&拓扑排序 详细代码可以fork下Github上leetcode项目,不定期更新。题目均摘自leetcode: 1. Leetcode 207: Course Schedule 2. Leetcode 210: Course Schedule IILeetcode 207: Course ScheduleProblem: There are a tot原创 2017-05-12 15:09:05 · 3207 阅读 · 0 评论 -
算法细节系列(16):深度优先搜索
算法细节系列(16):深度优先搜索 详细代码可以fork下Github上leetcode项目,不定期更新。题目均摘自leetcode: 1. 329 Longest Increasing Path in a Matrix 2. 488 Zuma Game 3. 417 Pacific Atlantic Water Flow 4. 332 Reconstruct Itinera原创 2017-05-11 15:08:52 · 738 阅读 · 0 评论 -
算法细节系列(23):回溯
算法细节系列(23):回溯 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode: 1. Leetcode 093: Restore IP address 2. Leetcode 037: Sudoku Solver 3. Leetcode 051: N-Queens 4. Leetcode 079: Word Search 5. Leetc原创 2017-05-23 19:21:41 · 980 阅读 · 0 评论 -
算法细节系列(14):动态规划之字符串处理
算法细节系列(14):动态规划之字符串处理 详细代码可以fork下Github上leetcode项目,不定期更新。题目均摘自leetcode:392 Is Subsequence516 Longest Palindromic Subsequence392.Is Subsequence水题,不一定要使用DP,但既然此章节关于DP,咱们就用DP解。 public boolean isS原创 2017-05-04 20:27:20 · 1147 阅读 · 0 评论 -
算法细节系列(11):再谈动态规划
再谈动态规划之前有一篇博文专门讲了什么是动态规划,但发现哪怕是理解了什么动态规划,在实际刷题时也遇到了很多麻烦。究其原因,对动规的理解还不够透彻,其次对状态的递归和迭代的转化不够熟练,所以遇到一个问题时,无法立刻写出递推式。本篇重在讨论如何利用递归技术实现记忆化搜索,在此基础上呈现问题从递归到迭代的转换,即动态规划。139 Word Break以下题目摘自leetcode的Word Break系列,原创 2017-04-25 11:40:03 · 1405 阅读 · 0 评论 -
算法细节系列(24):开始堆吧!
算法细节系列(24):开始堆吧! 详细代码可以fork下Github上leetcode项目,不定期更新。题目摘自leetcode:Leetcode 239: Sliding Window MaximumLeetcode 023: Merge k Sorted ListsLeetcode 218: The Skyline ProblemLeetcode 295: Find Median原创 2017-05-26 14:15:03 · 830 阅读 · 0 评论 -
POJ刷题指南
POJ刷题指南好久没写代码,编码能力退步了,后期争取每日一题,能刷多少是多少。OJ上的一些水题(可用来练手和增加自信) (poj3299(√),poj2159(√),poj2739(√),poj1083(√),poj2262(√),poj1503(√),poj3006(√),poj2255(√),poj3094(√))好吧,这9道题的确挺水的,不过对于我们这种业余选手还是可以练原创 2017-12-06 20:17:31 · 5720 阅读 · 0 评论