
Algorithm
文章平均质量分 76
一线涯
爱生活 爱技术 爱妹子 坚持写博客...
展开
-
从排序开始(二) 希尔排序
希尔排序,是对直接插入排序的改进版本,又称增量缩小排序,实质上是一种分组插入排序。 基本思想是 先取第一个增量step,以该序列内所有下标相差 step 的数作为一组,如 array[0], array[0 + step], array[0 + step*2].....作为一组,array[1], array[1 + step], array[1 + step*2]....作为一组,然后对原创 2013-09-15 20:47:31 · 1875 阅读 · 1 评论 -
【LeetCode】Algorithms 题集(七)
【Contains Duplicate】【Generate Parentheses】【Binary Tree Inorder Traversal】【Find Minimum in Rotated Sorted Array】【Minimum Path Sum】原创 2014-11-27 18:44:29 · 1082 阅读 · 0 评论 -
【LeetCode】Algorithms 题集(四)
【Maximum Subarray】【Single Number II】【Majority Element】【Climbing Stairs】【Convert Sorted Array to Binary Search Tree】原创 2014-11-07 22:58:16 · 1411 阅读 · 0 评论 -
【LeetCode】Agorithms 题集(一)
【Single Number】【Maximum Depth of Binary Tree】【Same Tree】【Reverse Integer】【Binary Tree Preorder Traversal】原创 2014-10-25 00:29:12 · 1868 阅读 · 0 评论 -
【LeetCode】Algorithms 题集(二)
【Linked List Cycle】【Best Time to Buy and Sell Stock】【Best Time to Buy and Sell Stock II】【Unique Binary Search Trees】【Populating Next Right Pointers in Each Node】原创 2014-10-25 17:50:05 · 1434 阅读 · 0 评论 -
【LeetCode】Algorithms 题集(五)
【Merge Two Sorted Lists】【Balanced Binary Tree】【Binary Tree Postorder Traversal】【Number of 1 Bits】【Unique Paths】原创 2014-11-25 23:50:54 · 1215 阅读 · 0 评论 -
【LeetCode】Algorithms 题集(六)
【Sort Colors】【Find Peak Element】【Remove Element】【Gray Code】【Swap Nodes in Pairs】原创 2014-11-26 23:56:43 · 1122 阅读 · 0 评论 -
【LeetCode】Algorithms 题集(三)
【Search Insert Position】【Excel Sheet Column Number】【Remove Duplicates from Sorted List】【N-Queens】【N-Queens II】原创 2014-10-25 21:35:00 · 1435 阅读 · 0 评论 -
【LeetCode】Algorithms 题集(八)
【Kth Smallest Element in a BST 】【Delete Node in a Linked List 】【Lowest Common Ancestor of a Binary Search Tree】【Valid Anagram 】【Add Digits】原创 2014-12-04 21:06:12 · 1487 阅读 · 0 评论 -
从排序开始(一)冒泡排序、插入排序与选择排序
学习算法,怎么可以不懂排序?但很多时候,我们习惯了用 sort 和 qsort,对于具体排序,我们也许真忘光了。冒泡排序(Bubble Sort): 说起排序就不能不说冒泡(Bubble Sort),它非常简单,维基中这样解释“重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经原创 2013-09-15 20:07:34 · 1685 阅读 · 0 评论 -
从排序开始(三)归并排序
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并操作的过程如下:1.申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列2.设定两个指针,最初位置分别为两个已经排序序列的起始位置3.比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置4.重复步骤原创 2013-09-17 23:59:17 · 1551 阅读 · 0 评论 -
从排序开始(五) 堆排序
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。通常所说的堆是一个近似完全二叉树的结构,并同时满足堆的性质:即最大堆子结点的关键字总是小于(如果是最小堆那就是大于)它的父节点。通常堆是通过一维数组来实现的。在起始数组为 0 的情形中:父节点 i 的左子节点在位置 (2*i+1);父节点 i 的右子节点在位置 (2*i+2);子节点 i 的父节点在位置 (i-1) / 2;原创 2013-09-21 23:05:00 · 1501 阅读 · 0 评论 -
疯狂 dp(一) 线性 dp
动态规划是为了求解一种包含大量重叠子问题的最优化问题的方法。基本思想是,将原问题分解为若干相似的子问题,在求解的过程中通过子问题的解求出原问题的解。听起来和分治法很相似,但是,分治法只是不断地将问题分解成小问题求解,而动规之所以优秀是它会进行类似于记忆化搜索的过程,在求解的过程中把每一个子问题的解保存下来(不管后面会不会用到),然后在求解更大的问题时,从这些子问题的解里面寻求当前问题的最优解。所以原创 2014-04-18 22:21:15 · 3553 阅读 · 0 评论 -
【LeetCode】Search Insert Position
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.You may assume no duplicates in the array.原创 2014-12-07 23:34:48 · 1008 阅读 · 0 评论 -
【LeetCode】Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once.原创 2014-12-09 00:08:28 · 3130 阅读 · 2 评论 -
从排序开始(四)快速排序
实现:#include using namespace std; void quickSort(int num[], int l, int r){ if (l >= r) return; //实现随机选取基数,即随机选一个数并和最左端的数交换 int k = rand()%(r - l + 1) + l; int t = num[k]; num[k] = nu原创 2013-09-18 23:10:02 · 1807 阅读 · 0 评论 -
【LeetCode】Algorithms 题集(九)
Product of Array Except Self; Nim Game; Move Zeroes; Invert Binary Tree; Missing Number原创 2014-12-05 22:01:22 · 973 阅读 · 0 评论