算法
郭帅童鞋
这个作者很懒,什么都没留下…
展开
-
小菜鸟的新开始
写这个博客开始的初衷是在九章算法上课结束后,老师建议每次做的题都要有一个总结,之前都是在界面自带的栏目中进行总结,做了翻转链表的题,觉得收获了很多,有一些不成熟的想法,也想以后每道题都在CSDN上写一个总结,希望自己能够坚持下去,学到更多的知识吧!原创 2016-05-21 11:22:56 · 273 阅读 · 0 评论 -
关于三种简单排序的想法
之前关于排序之类的东西总是看过就忘,这次索性来个小总结,亲自动手写一遍代码,眼过千遍不如手过一遍。这次就先写三种简单的排序:冒泡排序,插入排序和选择排序,均选择由小到大排序。 一:冒泡排序(Bubble Sort) 在冒泡排序中,最重要的思想是:两两比较,将两者较少的升上去。每次升到 i 位置的都是带排序数组中最小的数。 这样理解:(从小到大排序)存在10个不同大小的气泡,由底至上原创 2016-10-06 16:01:42 · 289 阅读 · 0 评论 -
heapify的总结
原题地址http://www.lintcode.com/zh-cn/problem/heapify/# 一.目的:将一组无序数组堆化 二.思路:根据堆的特性——每个A[i],A [i * 2 + 1]是A[i]的左儿子并且A[i * 2 + 2]是A[i]的右儿子这一特性,从A.length / 2,开始循环下滤。处理完一个节点,for循环处-1。下滤的时间复杂度为O(n)。上滤的时间爱你复杂度原创 2016-10-05 16:13:43 · 3016 阅读 · 0 评论 -
Min Stack 的总结
原题地址http://www.lintcode.com/en/problem/min-stack/ 一.目的:实现一个最小栈的功能,加入一个新的方法min,使其min的时候返回当前栈中最小值 二.思路:使用两个栈,一个正常栈,一个保存最小值的栈,当调用min方法时候,minstack.peek即可 三.易错点:当重写pop方法时候,正常栈无论如何都要pop,而最小栈只有当栈顶元素与正常栈的栈顶原创 2016-09-29 16:32:19 · 234 阅读 · 0 评论 -
Partition Array的总结
原题地址:http://www.lintcode.com/zh-cn/problem/partition-array/一.目的:根据给定K值划分数组二.思路:1)设置左右两个指针位置,分别寻找比K大和比K小的数,即不满足条件需要换位置的数字,一个左移一个右移;2)找到需要换位置的数字,交换其位置。三.易错点: 根据题目要求:所有小于k的元素移到左边所有大于等于k的元素移到右边,要注原创 2016-09-28 16:27:39 · 685 阅读 · 0 评论 -
Topological Sorting的总结
原题地址:http://www.lintcode.com/zh-cn/problem/topological-sorting/ 一.目的:给定一个有向图,对其进行点排序,即对于任何连接自顶点u到顶点v的有向边uv,在最后的排序结果中,顶点u总是在顶点v的前面。(该算法可以判断图中有无环) 二.思路: 1.根据点的入度来判定,在前面的肯定是入度为0的点,之后是为1为2等等。 2.将入度为0的点原创 2016-10-13 20:58:47 · 284 阅读 · 0 评论 -
clone Graph的总结之二
今天写clone Graph的的DFS实现方法,这部分采用递归来实现 DFS(Dpeth-first Search) 顾名思义,就是深度搜索,一条路走到黑,再选新的路。 递归写法的DFS伪代码如下:Input: A graph G and a root v of G procedure DFS(G,v): label v as discovered for all原创 2016-10-13 11:36:30 · 334 阅读 · 0 评论 -
clone Graph的总结之一
今天做lintcode的图题,第一道就碰到了当时春哥和我给老师跑仿真时候做的东西,那时候根本不懂BFS和DFS,春哥写的代码根本看不懂,还理不清头绪,春哥一行一行给讲解,现在今天又看到了相关的东西,感觉不胜唏嘘啊,感谢当年指导我的各位师兄们。题目来源是http://www.lintcode.com/zh-cn/problem/clone-graph/ 一.目的:给定一种无向图的定义,进行图的复制。原创 2016-10-12 20:38:54 · 646 阅读 · 0 评论 -
Remove Nth Node From End of List 的
给定一个链表,删除链表中倒数第n个节点,返回链表的头节点一.目标:如上二.思路:使用两个节点,让一个节点领先n+2,当开头的节点走到null 时,后一个节点走到了要删除的节点的前节点,此时可进行删除。三.易错点:分不清到底领先多少步和判断 n 与链表的长度的关系代码如下:/** * Definition for ListNode. * public class List原创 2016-08-14 19:40:50 · 205 阅读 · 0 评论 -
Reorder List的总结
题目:http://www.lintcode.com/zh-cn/problem/reorder-list/给定一个单链表L: L0→L1→…→Ln-1→Ln,重新排列后为:L0→Ln→L1→Ln-1→L2→Ln-2→…必须在不改变节点值的情况下进行原地操作。一.目的:将一个链表不断的头尾链接二.思路:第一步,先将整个链表分为前后两部分,用快慢指针的方法查找原创 2016-08-14 16:35:22 · 253 阅读 · 0 评论 -
Maximum Subarray 的总结
题目来源:http://www.lintcode.com/zh-cn/problem/maximum-subarray/样例:给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6一:目的:给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。二:思路:提示:i到j的和可以用前j个数的和减去前i-1个数的和设置三个变量原创 2016-08-24 17:05:08 · 303 阅读 · 0 评论 -
merge sorted array 的总结
http://www.lintcode.com/zh-cn/problem/merge-sorted-array/一.目的:将小的数组合并到大的数组之中二.思路:如将B merge 到A 中,应该从后置位开始排数,因为如果从前置位开始排数会导致大量的移数消耗,数组的移数消耗很大三个指针,一个A的,一个B的,一个当前的三.易错点:当前的指针容易搞错,不要忘记是原创 2016-08-15 19:50:14 · 244 阅读 · 0 评论 -
Merge k Sorted Lists 的分治法总结
合并k个排序链表,并且返回合并后的排序链表。样例 给出3个排序链表[2->4->null,null,-1->null],返回 -1->2->4->null一.目的:合并k个排序链表,并且返回合并后的排序链表二.思路:法1:分治的思想,先将 k/2 的搞定,在将2个list merge起来代码如下:/** * Definition for ListNod原创 2016-08-15 15:49:29 · 285 阅读 · 0 评论 -
Partition List 的总结
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should preserve the original relative order of the nodes in each of原创 2016-05-23 15:31:52 · 346 阅读 · 0 评论 -
reverse list II 的总结
question:Reverse a linked list from position m to n. Do it in-place and in one-pass.For example:Given 1->2->3->4->5->NULL, m = 2 and n = 4,return 1->4->3->2->5->NULL.Note:Given m, n sa原创 2016-05-21 11:24:54 · 246 阅读 · 0 评论 -
从头到尾打印链表
一.目标:输入一个链表,从尾到头打印链表每个节点的值。 二.思路:链表应该只是遍历一遍,因为从尾到头翻转太麻烦,可以用一个ArrayList记录值,然后翻转ArrayList。 三.易错点: 1.获取ArrayList长度用 .size(),string用 .length(),[] 用.length。 2.取值方法为 get 和 set 。 3.应该for到长度的一半,如果for全部的话就原创 2016-12-08 17:23:03 · 306 阅读 · 0 评论