算法
Snipergzf
这个作者很懒,什么都没留下…
展开
-
剑指Offer题目JAVA版思路与代码(五)
第十五题:反转链表 题目描述: 输入一个链表,反转链表后,输出链表的所有元素。 思路: 由于在做指针反转的过程中,对于结点i,需要知道它前一个结点h来作为反转后的下一个结点,以及后一个结点j来继续推进。 代码:/* public class ListNode { int val; ListNode next = null; ListNode(int val) {原创 2017-01-20 23:32:47 · 391 阅读 · 0 评论 -
剑指Offer题目JAVA版思路与代码(六)
第二十一题:栈的压入、弹出序列 题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 思路: 首先判断第二个序列中的数字是否在栈顶,如果原创 2017-01-21 22:45:07 · 430 阅读 · 0 评论 -
剑指Offer题目JAVA版思路与代码(九)
第三十二题:把数组排成最小的数 题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路: 可以给出一个新的定义:两个数a、b,如果ab>ba,则定义a大于b,反之,则a小于b;根据此定义将数组中的所有数从小到大排序,然后依序组合成的数字就是最小数字。原创 2017-02-13 10:52:22 · 588 阅读 · 0 评论 -
剑指Offer题目JAVA版思路与代码(七)
第二十五题:复杂链表的复制 题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路: 第一步:扫描原链表,把复制的结点就连在原结点的后面;例如:(原链表)A->B->C —–> A->A’->B->B’->原创 2017-01-24 23:30:40 · 385 阅读 · 0 评论 -
剑指Offer题目JAVA版思路与代码(八)
第二十九题:最小的k个数 题目描述: 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 思路: 有一个时间复杂度是o(nlog(k))的方法,需要用到最大堆,用k个单位的空间换取时间效率,并且适用于大数据,然而对于这个题目并没有太大的必要。 所以下面介绍一种时间复杂度为o(n)的方法,就是借鉴快速排序方法,寻找最小的原创 2017-01-26 14:59:16 · 720 阅读 · 0 评论 -
剑指Offer题目JAVA版思路与代码(四)
第十二题:树值的整数次方 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路: 这个题目主要的考点一是base, exponent都有0,负数,正数的情况,二是base的exponent次方可以用o(logN)的时间复杂度计算得到。 代码:public class Solution { public do原创 2017-01-19 22:27:39 · 376 阅读 · 0 评论