算法面试刷题
文章平均质量分 53
1只小包子
没什么好说的,开始吧
展开
-
算法面试之链表
算法面试之链表链表的翻转翻转m到n之间的链表节点复制带随机指针的链表链表的翻转 public ListNode reverse(ListNode head) { if(head==null || head.next==null){ return head; } ListNode cur=head;原创 2017-12-21 15:43:43 · 218 阅读 · 0 评论 -
快速排序与三向切分的快速排序
快速排序三向切分的快速排序快速排序讲解的十分生动形象 维护一个指针lo,维护一个指针hi,初始时lo指向数组的第一个元素,hi指向数组的最后一个元素。 对于快速排序来说其核心有如下几点 1. 选取一个元素(一般为数组的第一个元素)作为基准,可以生动的想象在基准元素上挖了一个坑,把基准元素挖了出来,并移植给了临时变量x 2. 既然将基准元素挖坑并取走那还需要把这个坑给填上,所原创 2018-01-08 22:47:54 · 774 阅读 · 0 评论 -
快速排序与三向切分的快速排序
快速排序三向切分的快速排序快速排序讲解的十分生动形象 维护一个指针lo,维护一个指针hi,初始时lo指向数组的第一个元素,hi指向数组的最后一个元素。 对于快速排序来说其核心有如下几点 1. 选取一个元素(一般为数组的第一个元素)作为基准,可以生动的想象在基准元素上挖了一个坑,把基准元素挖了出来,并移植给了临时变量x 2. 既然将基准元素挖坑并取走那还需要把这个坑给填上,所原创 2018-01-25 17:59:40 · 212 阅读 · 0 评论 -
算法面试刷题之字符串
在Java中字符串内容是不可变的,也就是说如果想对字符串做出改变,那么需要用返回值来接收新的字符串,一旦对字符串内容做出了改变,就会产生一个新的字符串实例,例如:String str="hello";str.toUpperCase();虽然对str做了toUpperCase的操作,但是操作的结果是产生一个新的String,str的结果不会发生变化 依旧是hello小写,这就产生了原创 2017-05-10 11:22:43 · 1050 阅读 · 0 评论 -
算法面试之二叉树打印
关于二叉树打印解题关键如下: 使用Queue保存节点,当Queue不为空时进行循环判断。Queue<TreeNode> queue=new LinkedList<TreeNode>();queue.add(root);while(!queue.isEmpty()){.......}一种做法是设定两个指针,last和nlast,last标示当前打印的最右...原创 2018-02-10 16:05:42 · 238 阅读 · 0 评论 -
ThreeSum问题求解
问题描述:一个包含n个元素的数组,在其中选出3个元素 a,b,c 能否使得三个元素之和等于0. 问题扩展: 1.当三个元素可以重复时,例如 int a={-1,-3,-1,2},此时可以选择 -1,,1,2,即三个元素可以包含重复的元素。 2. 当三个元素不能包含重复的元素的时候,例如 int a={-1,-3,-1,2},此时不能选择-1,-1,2 因为-1被选择了两次。 3. 当数组中...原创 2018-02-26 11:33:02 · 670 阅读 · 0 评论 -
面试算法总结------动态规划
动态规划动态规划中最重要的两点就是 1.确定状态的定义,即将一个问题准确的定义为某一个状态方程 2.确定状态转移方程的定义 即将上述定义的状态方程与其之前的状态进行关联 3.将状态转移过程中的中间变量进行保存 避免多次重复运算1. 0,1背包问题给定一个容量为C的背包,给定需要在背包中装填的物体的质量 w,以及物体的价值v ,使得装填的物体在不超过背包容积的情况下 得到的物体价值最大0...原创 2019-04-11 15:40:57 · 666 阅读 · 0 评论