--------剑指offer
lkj41110
这个人很懒,没有写下什么
展开
-
剑指offer——不用加减乘除做加法
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号第一直觉是使用位运算,但是位运算没有进位,只要加上进位的为题就可以了private static int add(int n1, int n2) { int num, temp; do { num = n1 ^ n2; temp = (n1 &原创 2017-02-19 22:40:46 · 389 阅读 · 0 评论 -
剑指Offer——连续子数组的最大和
HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?一种思路,使用两个循环,分原创 2017-02-20 11:31:42 · 741 阅读 · 0 评论 -
剑指Offer—— 二维数组中的查找
题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。我一开始的思路是从左到右,从上到下遍历。public boolean Find1(int target, int[][] array) { for (int i = 0; i < array.length; i+原创 2017-02-23 11:52:50 · 548 阅读 · 0 评论 -
剑指Offer—— 跳台阶
题目一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法解析:当青蛙到到n级时,有两种跳法,一种是从n-1级跳1级,还有种是n-2跳2级 f(n)=f(n-1)+f(n-2),大家对这个公式是不是很熟悉,对,是斐波那契数列。所以这是一道动态规划的问题。// 斐波那契数列,只能上1或2级的方法 public int JumpFloor(int target原创 2017-02-24 14:17:43 · 293 阅读 · 0 评论 -
剑指Offer—— 最小的K个数
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4第一种方法是全排序,先把数组进行排序,排序后依次输出最小的4个,时间复杂度为nlogn。第二种方法是的原理和快速排序有关,是通过快速排序的优化版解题目。快速排序是定义一个基点(一般是第一个数字),每次排序后会把数组中小于基点的放在前面,大于基点的放在后面。(具体的快速排序算法原创 2017-03-03 21:28:50 · 339 阅读 · 0 评论 -
剑指Offer—— 链表的公共点
题目表述输入两个链表,找出它们的第一个公共结点。首先要明白一点,两条链表相交,则他们的形状类似Y,而不是X。所以,从相交的点以后,两条链表的所有结点都是一样的。我们只要找出第一个相同的结点即可。 1.我们分别算出两条链表的长度 2.算出两条链表的长度差,并除去长的链表前面多余的结点 3.同时遍历,找出第一个相同的结点public class Solution14 { public Li原创 2017-03-03 21:41:20 · 340 阅读 · 0 评论