
剑指
qiannuo_
这个作者很懒,什么都没留下…
展开
-
斐波那契数列
import java.util.Scanner;public class Solution { public int Fibonacci(int n) { int res=0; int f1=0; int f2=1; if(n==0) return f1; if(n==1) ...原创 2019-03-10 19:36:33 · 142 阅读 · 0 评论 -
剑指15----单链表反转,返回反转后链表头结点(360测试实习生面试题)
为了正确反转一个链表,需调整指针指向,例如i,m,n是3个相邻结点,假设结点i之前的指针已调整完毕,,这些结点的next指针都指向前面一个结点,遍历到结点m时,需要调整结点的next指针,避免链表断开,在调整之前需保存n,然后找反转后链表的头结点(即原链表的尾结点,next为空指针的结点)class Node{ int data; Node next; publ...原创 2018-11-13 16:08:13 · 294 阅读 · 0 评论 -
剑指-将一个字符串转换成一个整数,实现Integer.valueOf(string)的功能
题目:将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。思路:1.先判断第一位是不是符号位,如果有符号,有flag 做标记。2.遍历字符串中的每个字符,如果存在非数字的字符,直接返回 0,否则,用当前字符减去'0'得到当前的...原创 2019-03-10 21:16:19 · 432 阅读 · 0 评论 -
剑指offer 二叉搜索树的第k个结点
题目:给定一棵二叉搜索树,请找出其中的第k小的结点。如(5,3,7,2,4,6,8)中,第三小结点的值为4。思路:因为二叉搜索树按照中序遍历的顺序打印出来就是排好序的,所以,我们按照中序遍历找到第k个结点就是题目所求的结点。/*public class TreeNode { int val = 0; TreeNode left = null; TreeN...原创 2019-03-10 21:50:06 · 111 阅读 · 0 评论 -
剑指:不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不得适用+,-,* ,./ 四则运算符号首先,分析如何进行十进制的加法?比如是如何得出5+17=22的,实际上,可以分三步进行:1)只做各位相加不进位,此时相加的结果是12,2)第二步做进位,5+7中有进位,进位的值为10;3)第三步,把前面的两个结果加起来12+10的结果是22,刚好5+17=22除了四则运算之外,只剩...转载 2019-03-10 22:03:42 · 141 阅读 · 0 评论 -
剑指offer:数字在排序数组中出现的次数
题目:统计一个数字在排序数组中出现的次数。例如输入排序数组{1, 2, 3, 3,3, 3, 4, 5}和数字3,由于3在这个数组中出现了4次,因此输出4。分析:对于例子来说,如果采用二分法找到某一个3后,再往前遍历和往后遍历到第一个和最后一个3,在长度为n的数组中有可能出现O(n)个3,因此这样的扫描方法时间复杂度为O(n),效率与从头到尾扫描一样,速度太慢。 这题关键是找到第一个和最...原创 2019-03-10 22:08:47 · 168 阅读 · 0 评论 -
剑指-找出数组中重复的数字
题目 在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},那么对应的输出是重复的数字2或者3。思路 从哈希表的思路拓展,重排数组:把扫描的每个数字(如数字m)放到其对应下标(m下标)的位置上,...原创 2019-03-11 12:16:03 · 271 阅读 · 0 评论 -
前K个频率最高的元素
给定一个非空的整数数组,返回前K个频率最高的元素。例如,[1,1,1,2,2,3] , k = 2, return [1,2].思路:最简单的办法就是采用两层for循环去遍历,时间复杂度为O(n2)。方法二:先用快速排序将数组排序,然后依次找出前k个高频元素,时间复杂度O(NLogN)。方法三:可以采用HashMap,这种方式时间复杂度为O(N),空间复杂度O(N)。下面,采用...原创 2018-11-19 20:51:10 · 735 阅读 · 0 评论