经典算法,LeetCode题目研究
文章平均质量分 52
经典算法研究;LeetCode按标签分类整理,分析研究。分别用C++/C#和Python语言实现
zg1g
7年算法工程师,10年Python使用经验。
展开
-
leetcode已完成题目索引
算法研究的重要性2 leetcodeleetcode是面试算法真题,囊括了常用算法思想和经典题目,是算法入门和提升的好材料。我每天都至少训练一个题目,锻炼自己的逻辑思维和写算法的严密性。3 标签和题目常用标签 已完成题目列表 ID Tags Solution 1 Array;HashTable; Two Sum 2 Lin原创 2017-06-10 21:17:56 · 13997 阅读 · 1 评论 -
关于C++各类排序算法与std::sort性能的比较
talk is cheap.直接放代码(C++)。 先定义一个计时的类。class Time_count//时间计时类,需要#include< ctime>{private: clock_t start_,end_; double duration;//记录时间public: Time_count() { start_=c...原创 2015-11-21 14:26:59 · 9905 阅读 · 2 评论 -
717. One-bit and two-bits characters
记录下,LeetCode Contest 56 题1,包括题目意思,和解题思路。 这个题目上来读了好几遍才理解它的意思,理解意思后,这个题目就比较简单了。 不过为了提升算法效率,进一步做了一些优化,优化后 beat 100% submission,重点看下优化思路吧。 1 原题解读We have two special characters. The first charact原创 2017-11-07 19:23:32 · 4873 阅读 · 0 评论 -
动态规划中篇:爬楼梯
1 你会学到什么 2 动态规划相关理论 3 动态规划好在哪里 4 爬楼梯 5 总结 1 你会学到什么?在前面的两个推送: LeetCode实战:动态规划算法是怎么一回事 动态规划:括号知多少 我们通过两个实际问题,《装水做多的容器》和《括号知多少》,初步对动态规划有了一个初步了解。在本推送中,我们将解决以下两个问题:动态规划牺牲空间换来了什么?动态规划如何提升时间性能的?再举动原创 2017-11-05 09:01:58 · 5416 阅读 · 0 评论 -
动态规划:括号知多少
1 你会学到什么?在上一消息推送中,我们通过《装水最多的容器》这个实际问题,初步了解了动态规划的魅力所在,还记得如果我们枚举所有可能的容器高度和边长时得到算法时间复杂度很大,而经过仔细分析目标函数和其变量关系时,我们发现把初始值设置为最大底边长度乘以相原创 2017-11-04 00:16:42 · 1450 阅读 · 1 评论 -
LeetCode实战:动态规划算法是怎么一回事
1 回顾 2 你会学到什么 3 讨论的问题是什么 4 动态规划入门 5 解决问题的方法 5-1 问题分析 5-2 暴力枚举 5-3 动态规划 5-4 算法思路 5-5 源码实现 5-6 模拟gif 6 算法评价 7 总结 8 GitChat 9 公众号原创 2017-11-03 07:57:07 · 2418 阅读 · 0 评论 -
不基于比较的基数排序原理图解
借助桶编号(键)经过多次分配和采集,最终得到一个有序序列,基数排序算法独树一帜,不像之前总结的排序算法...原创 2017-11-01 08:03:12 · 5969 阅读 · 0 评论 -
归并排序算法的过程图解
归并排序的时间复杂度,在最坏,最好和平均都是O(nlogn),这是效率,性能非常好的排序算法。只不过它需要占用 O(n)的内存空间,如果数据量一旦很大,内存可能吃不消,这是它的弱点和致命伤。而其他排序算法,比如快速排序,希尔排序,都是就地排序算法,它们不占用额外的内存空间。原创 2017-10-31 07:55:06 · 32098 阅读 · 5 评论 -
直接插入排序到希尔排序做的那些改进
彻底弄明白常用的排序算法的基本思想,算法的时间和空间复杂度,以及如何选择这些排序算法,确定要解决的问题的最佳排序算法,已经总结了冒泡排序和其改进后的快速排序算法,直接选择排序和堆排序算法,下面总结直接插入排序到希尔排序做的改进,后面再继续总结归并排序和基数排序。原创 2017-10-30 09:02:16 · 2575 阅读 · 1 评论 -
直接选择排序到堆排序做的那些改进
1 你会学到什么 2 讨论的问题是什么 3 相关的概念和理论 4 直接选择排序基本思想升序排序的例子算法评价 5 直接选择的优化版之堆排序自学成才的计算机科学家 Flody堆排序的基本概念堆排序的算法思想堆排序是如何工作的应用堆排序得到升序排序的例子算法评价 6 总结 1 你会学到什么?彻底弄明白常用的排序算法的基本思想,算法的时间和空间复杂度,以及如何选择这些排序算法原创 2017-10-29 08:24:09 · 3127 阅读 · 0 评论 -
冒泡排序到快速排序做的那些优化
你会学到什么?彻底弄明白常用的排序算法的基本思想,算法的时间和空间复杂度,以及如何选择这些排序算法,确定要解决的问题的最佳排序算法,我们先总结下冒泡排序和其改进后的快速排序这两个算法,后面再继续总结插入排序、希尔排序、选择排序、堆排序、归并排序和基数排序。讨论的问题是什么?各种排序算法的基本思想;讨论各种排序算法的时间、空间复杂度;以及算法的稳定性;算法是如何改进的,比如冒泡排序如何改原创 2017-10-28 07:39:51 · 3044 阅读 · 0 评论 -
二叉树非递归版的后序遍历算法
你会学到什么?树的递归遍历算法很容易理解,代码也很精简,但是如果想要从本质上理解二叉树常用的三种遍历方法,还得要思考树的非递归遍历算法。读完后的收获:将学到二叉树的后序遍历的非递归版本明白栈这种数据结构该怎么使用讨论的问题是什么?主要讨论二叉树的非递归版后序遍历该如何实现,包括借助什么样的数据结构,迭代的构思过程等。相关的概念和理论遍历 Traversal 指沿着某条搜索路线,依次对树中每个结原创 2017-10-27 15:57:32 · 8440 阅读 · 0 评论 -
图解二叉树非递归版的中序遍历算法
你会学到什么讨论的问题是什么这个问题相关的概念和理论非递归版中序遍历算法代码思考算法技巧实现代码快照评价算法总结欢迎关注算法思考与应用公众号你会学到什么?树的递归遍历算法很容易理解,代码也很精简,但是如果想要从本质上理解二叉树常用的三种遍历方法,还得要思考树的非递归遍历算法。读完后的收获:您将学到二叉树的中序遍历的非递归版本明白栈这种数据结构该怎么使用讨论的问题是什么?主原创 2017-10-26 12:57:45 · 4659 阅读 · 0 评论 -
图解二叉树非递归版的前序遍历算法
“ 图解用栈数据结构对树的前序遍历,中序遍历,后续遍历。”原创 2017-10-25 11:22:55 · 9219 阅读 · 0 评论 -
算法思想-深度搜索算法-leetcode相关题目总结
搜索算法深度优先搜索分析过程实现代码进出栈过程示意图 DFS算法应用-Leetcode相关题目 Leetcode 78 Subsets Leetcode 90 Subsets II Leetcode 47 Permutations II Leetcode 131 Palindrome Partitioning答案搜索算法搜索算法,常见的几种形式,深度优先,广度优先,二分搜索,应原创 2017-10-24 17:31:25 · 7596 阅读 · 0 评论 -
131. Palindrome Partitioning
深度优先搜索找字符串的子回文字符串原创 2017-10-19 17:15:55 · 4003 阅读 · 0 评论 -
Leetcode 55. Jump Game
题目 Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array represents your maximum jump length at that position. Determine i原创 2017-08-17 22:41:32 · 583 阅读 · 0 评论 -
658. Find K Closest Elements
Given a sorted array, two integers k and x, find the k closest elements to x in the array. The result should also be sorted in ascending order. If there is a tie, the smaller elements are always prefer原创 2017-08-15 12:59:32 · 847 阅读 · 0 评论 -
138. Copy List with Random Pointer
A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.Return a deep copy of the list.code注意某个节点没有next,但是有random的情况/* * Defi原创 2017-08-13 07:55:17 · 4152 阅读 · 0 评论 -
133. Clone Graph
Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors.OJ’s undirected graph serialization: Nodes are labeled uniquely.We use # as a separator for each node, an原创 2017-08-13 06:23:05 · 602 阅读 · 0 评论 -
61. Rotate List
在指定位置旋转链表原创 2017-08-11 17:13:42 · 385 阅读 · 0 评论 -
240. Search a 2D Matrix II
题目深度和宽度方向都是递增序列的二维数组,查看目标值是否存在。 Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:Integers in each row are sorted in ascending from le原创 2017-08-05 17:33:41 · 339 阅读 · 0 评论 -
74. Search a 2D Matrix
分别在深度方向和宽度方向二查搜索。题目Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:Integers in each row are sorted from left to right. The first int原创 2017-08-05 07:33:06 · 428 阅读 · 0 评论 -
80. Remove Duplicates from Sorted Array II
题目可以重复一次的去重操作Follow up for “Remove Duplicates”: What if duplicates are allowed at most twice?For example,Given sorted array nums = [1,1,1,2,2,3],Your function should return length = 5, with the first原创 2017-07-31 17:43:19 · 501 阅读 · 0 评论 -
59. Spiral Matrix II
题目生成螺旋矩阵 Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.For example, Given n = 3,You should return the following matrix:[ [ 1, 2, 3 ], [ 8, 9, 4 ],原创 2017-07-30 15:17:56 · 552 阅读 · 0 评论 -
54. Spiral Matrix
螺旋式遍历矩阵 如下图所示的方法。 Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.For example, Given the following matrix:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7,原创 2017-07-30 14:48:27 · 687 阅读 · 0 评论 -
90. Subsets II
题目Given a collection of integers that might contain duplicates, nums, return all possible subsets.Note: The solution set must not contain duplicate subsets.For example, If nums = [1,2,2], a solution i原创 2017-07-29 19:20:54 · 2749 阅读 · 0 评论 -
78. Subsets
题目Given a set of distinct integers, nums, return all possible subsets.Note: The solution set must not contain duplicate subsets.For example, If nums = [1,2,3], a solution is:[ [3], [1], [2], [原创 2017-07-29 18:38:48 · 2770 阅读 · 0 评论 -
60. Permutation Sequence
题目求n个排序数的第k项 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""原创 2017-07-29 15:54:48 · 2718 阅读 · 0 评论 -
147. Sort a linked list using insertion sort
题目Sort a linked list using insertion sort.代码public ListNode InsertionSortList(ListNode head) { if (head == null) return null; //begining point of the sorted list, set a原创 2017-07-27 17:22:02 · 2694 阅读 · 0 评论 -
142. Linked List Cycle II
题目Given a linked list, return the node where the cycle begins. If there is no cycle, return null.Note: Do not modify the linked list.Follow up: Can you solve it without using extra space?代码/** * Defi原创 2017-07-26 19:15:18 · 509 阅读 · 0 评论 -
41. First Missing Positive
Find Missing Number 系列问题,灵活运用index,或异或在O(n)时间复杂度,O(1)空间复杂度解决问题。题目Given an unsorted integer array, find the first missing positive integer.For example,Given [1,2,0] return 3,and [3,4,-1,1] return 2. Y原创 2017-07-26 11:16:25 · 2533 阅读 · 0 评论 -
47. Permutations II
原题求解带有重复元素的序列的所有排序 Given a collection of numbers that might contain duplicates, return all possible unique permutations.For example, [1,1,2] have the following unique permutations:[ [1,1,2], [1,2原创 2017-07-25 17:22:57 · 2614 阅读 · 0 评论 -
46. Permutations
求一个序列的所有排序组合。题目Given a collection of distinct numbers, return all possible permutations.For example, [1,2,3] have the following permutations:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2],原创 2017-07-25 14:37:36 · 363 阅读 · 0 评论 -
31. Next Permutation
求其下一个排序数的思路:1. **逆序**搜索,找到第一个满足 $$nums[i-1]<nums[i] $$ 的位置,在 i=1 处。并且 **i~n-1 序列一定是一个逆序序列**;2. 交换 nums[i-1] 和 i>=1子序列的最小值。 最小值为 **4**;即交换 3 和 4,得到的序列为:**4** 5 **3** 2 13. 将i>=1的序列反转,即 4 **1 2 3 5**原创 2017-07-25 08:33:31 · 360 阅读 · 0 评论 -
64. Minimum Path Sum
题目Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.Note: You can only move either down or right at an原创 2017-07-24 14:53:01 · 427 阅读 · 0 评论 -
63. Unique Paths II
上一个题目的完整解题思路: http://blog.csdn.net/daigualu/article/details/76018298Follow up for “Unique Paths”:Now consider if some obstacles are added to the grids. How many unique paths would there be?An obstacle原创 2017-07-24 12:45:21 · 468 阅读 · 0 评论 -
62. Unique Paths
题目A robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below).The robot can only move either down or right at any point in time. The robot is trying to reach the bot原创 2017-07-24 12:40:55 · 596 阅读 · 0 评论 -
40. Combination Sum II
题目Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.Each number in C may only be used once in the combination.原创 2017-07-22 21:46:03 · 784 阅读 · 0 评论 -
39. Combination Sum
题目Given a set of candidate numbers (C) (without duplicates) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.The same repeated number may be chosen from原创 2017-07-22 19:33:22 · 456 阅读 · 0 评论