![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
差唔多先生
编程最不重要的是源代码,最重要的是算法和数据结构。
展开
-
LeetCode 599 Insert into a Cyclic Sorted List (Java)
[LintCode] 599 Insert into a Cyclic Sorted List 解题报告DescriptionGiven a node from a cyclic linked list which has been sorted, write a function to insert a value into the list such that it remains...原创 2018-07-16 16:54:44 · 348 阅读 · 0 评论 -
插入排序 Insertion sort
插入排序是一个简单的排序算法,一次排序一项构建最终的有序数组。在大列表排序上相比于更先进的算法例如快速排序、堆排序、归并排序就不那么有效了。然而,插入排序有如下优点:简单实现:Jon Bentley 展示了一个 3 行代码的 C 版本和一个 5 行代码的优化版本。对小数据集有效,非常像其他平方排序算法。在实践中比其他平方算法例如选择排序、冒泡排序更有效。自适应:对已经排序的数据集有效:时...原创 2019-03-19 13:25:41 · 148 阅读 · 0 评论 -
LeetCode 3. Longest Substring Without Repeating Characters(Java)解题报告
RequirementGiven a string, find the length of the longest substring without repeating characters.Example 1:Input: “abcabcbb” Output: 3 Explanation: The answer is “abc”, which the length is 3....原创 2019-03-21 23:05:10 · 74 阅读 · 0 评论 -
LeetCode 3. Longest Substring Without Repeating Characters(Java)解题报告
RequirementGiven a string, find the length of the longest substring without repeating characters.Example 1:Input: “abcabcbb” Output: 3 Explanation: The answer is “abc”, which the length is ...原创 2018-09-11 10:32:19 · 141 阅读 · 0 评论 -
BFS&DFS广度优先搜索和深度优先搜索
Queue and BFSBFS是Breath First Search的缩写,就是大家所熟悉的广度优先搜索。通俗的讲,BFS就是一层一层地搜索,可以利用队列Queue先进先出的特性实现广度优先搜索。 下面提供两个BFS的模板: Template I/** * Return the length of the shortest path between root and targ...原创 2018-09-04 17:00:24 · 179 阅读 · 0 评论 -
递归地解决问题Solve Problem Recursively
自顶向下解决方法”Top-down” Solution例如找一颗二叉树的最大深度:private int answer; // don't forget to initialize answer before call maximum_depthprivate void maximum_depth(TreeNode root, int depth) { if (root ...原创 2018-08-16 16:09:09 · 293 阅读 · 0 评论 -
循环检测 Cycle Detection
定义域是{0,1,…,n},映射到值域{1,2,…,n},必定存在至少一个值最少被映射两次。 x到y的映射,把x和y当作两个节点,映射当作x的next指针,可以构成类似于链表的数据结构,你会发现必定存在循环。 循环检测Cycle Detection可以找到循环开始的节点(地方)。Floyd’s Tortoise and HareBrent’s algorithm...原创 2018-07-26 17:57:45 · 1921 阅读 · 0 评论 -
大O复杂度分析 Big-Oh notation
Big-Oh测量执行时间和内存如何随输入大小增加而增长的方式。优点大O给你与问题大小有关的趋势大O分析能hold得住即使计算机快十倍常见的增长率O(1):常数时间O(n):线性时间O(log n):对数时间,在常数时间和线性时间之间O(2n2n2^n):指数时间,非常糟糕的...原创 2018-07-20 17:06:15 · 5035 阅读 · 0 评论 -
分治策略 Divide and Conquer
分治策略最简单的分治算法应用 1.计算阶乘public static int factorial(int n) { assert(n >= 0);// pre-condition if (n == 0) return 1; else return n * factorial(n-1); // post-condition: returns n!...原创 2018-07-20 11:53:07 · 140 阅读 · 0 评论 -
二分搜索 Binary Search
预处理给定一个数组要搜索目标值,返回目标值的位置(下标)。如果数组是无序的,那么就要做排序预处理。二分搜索模板一public int binarySearch(int[] nums,int target){ if(nums==null){ return -1; } int left=0,right=nums.length-1; whi...原创 2018-07-18 15:49:46 · 155 阅读 · 0 评论 -
深拷贝与浅拷贝 Deep Copy & Shallow Copy
深拷贝深拷贝是指创建原对象的副本浅拷贝浅拷贝是指对原对象的引用原创 2018-07-17 09:24:22 · 149 阅读 · 0 评论 -
选择排序 Selection Sort
选择排序是一种在原来位置上的排序,即空间复杂度为 O(1),它把要排序的数组分为两部分,已排序的部分和待排序的部分,假设要将待排序的数组按升序排列,已排序的部分在左边,大小每次加一,待排序的部分找到最小的元素和该部分最左边的元素交换位置,然后待排序的部分大小减一,直到为一停止,因为一个元素是有序的。...原创 2019-03-27 19:14:43 · 121 阅读 · 0 评论