Fork me on GitHub
摘要: 题目描述思路分析Java代码代码链接题目描述 给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例给定 nums = [2, 7, 11, 15], target = 9 ,因为 nums[0] + nums[1] = 2 + 7 = 9 , 所... 阅读全文
posted @ 2019-08-05 23:54 这个世界~ 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 题目描述思路分析测试用例Java代码代码链接题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路分析让整数和1相与,可以判断整数二进制表示中最右边一位是否为1,将1左移之后再和整数相与,可以比较右数第二位,循环比较,就可以统计出二进制中1的个数(可能一般想到的是将整数右移,之后再和1相与,但是这种方法传入负数时会陷入死循环,因为负数的右移操作会在高位补1,而不是0)一个... 阅读全文
posted @ 2019-08-05 23:21 这个世界~ 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 题目描述思路分析测试用例Java代码代码链接题目描述 给你一根长度为n绳子,请把绳子剪成m段(m、n都是整数,n>1并且m≥1)。每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]* k[1]*…*k[m]可能的最大乘积是多少?例如当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到最大的乘积18。思路分析动态规划: 定义函数f(n) 为将长度为n的绳子剪成若干段后... 阅读全文
posted @ 2019-08-05 21:31 这个世界~ 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 题目描述思路分析Java代码代码链接题目描述 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?思路分析... 阅读全文
posted @ 2019-08-05 17:37 这个世界~ 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 题目描述思路分析Java代码代码链接题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 \[ \begin{matrix}a & b & t &g \\c & f & c & s\\j & d & ... 阅读全文
posted @ 2019-08-05 15:47 这个世界~ 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 题目描述思路分析Java代码代码链接题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路分析利用二叉查找的思路,由于是旋转数组,可以分成两个排序的子数组,而且最小... 阅读全文
posted @ 2019-08-05 12:21 这个世界~ 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 题目描述思路分析Java代码代码链接题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。思路分析递归的思路,会出现很多重复的操作,效率低下;可以从下往上计算,首先根据f(0)和f(1)计算出f(2),再根据f(1)和f(2)计算出f(3),一次类推,可以计算出第n项。算法的时间复杂度为O(n);Java代码public class O... 阅读全文
posted @ 2019-08-05 02:34 这个世界~ 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 题目描述思路分析Java代码代码链接题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路分析其实就是斐波那契数列,f(1)=1 f(2) =2 ,n= 3时,两种情况:青蛙先跳一个台阶,后面还有两个台阶,所以跳法就为f(2),青蛙先跳两个台阶,后面还有1个台阶,所以跳法就为f(1),综上 n=3 时 跳法为f(1)+... 阅读全文
posted @ 2019-08-05 02:34 这个世界~ 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 题目描述思路分析Java代码代码链接题目描述 用两个栈实现队列 思路分析栈--> 先进后出 队列--> 先进先出进队列操作,选择栈s1进栈,关键在与实现出队列操作,要考虑到队列先进先出的性质,出队列时要将s1中的元素弹出并压入栈s2中,然后s2弹栈就可以保证先进先出的性质。Java代码public class Offer009 { public static void main(St... 阅读全文
posted @ 2019-08-05 02:33 这个世界~ 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 题目描述思路分析Java代码代码链接题目描述 给定一棵二叉树和其中的一个结点,如何找出中序遍历顺序的下一个结点? 树中的结点除了有两个分别指向左右子结点的指针以外,还有一个指向父结点的指针。思路分析链表的结构中 有指向父结点的指针,方法输入为二叉树的头结点分为两种情况:若当前结点有右子树时,它中序遍历的下一个结点为 它的右子树中的最左子结点;若当前结点没有右子树时:该结点是它父结点的左子结点,那... 阅读全文
posted @ 2019-08-05 02:32 这个世界~ 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 题目描述思路分析Java代码代码链接题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路分析设计的方法中输入的是两个数组,前序(pre)和中序(in)遍历数组;pre的第一个元素一定是根元素,然后... 阅读全文
posted @ 2019-08-05 02:32 这个世界~ 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 题目描述思路分析Java代码代码链接题目描述 从尾到头打印链表,将其添加到ArrayList当中输出 思路分析递归的思路利用栈Java代码public class Offer006 { public static void main(String[] args) { ListNode ListNode1 = new ListNode(1); ListNode ... 阅读全文
posted @ 2019-08-05 02:31 这个世界~ 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 题目描述思路分析Java代码代码链接题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路分析 由于给定的二位数组是从左到右递增,从上到下递增,所以可以选择二维数组中的某一个边角(右上角或者左下角)开始进行搜索和筛选,比如:从右上角开始,如果目标数字大于右上角的数字(由... 阅读全文
posted @ 2019-08-05 02:30 这个世界~ 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 题目描述思路分析Java代码代码链接题目描述 请实现一个函数,把字符串中的每个空格替换成"%20"。 例如输入“We are happy.”,则输出“We%20are%20happy.”。思路分析Java中实现字符的替换可以使用String内置的函数replaceAll考虑不用Java中的函数实现:根据牛客网练习题中所定义的函数中参数为StringBuffer,返回值为String。整体思路就... 阅读全文
posted @ 2019-08-05 02:30 这个世界~ 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 题目描述思路分析Java代码代码链接题目描述 在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的。 请找出数组中任意一个重复的数字,但不能修改输入的数组。例如,如果输入长度为8的数组{2,3,5,4,3,2,6,7},那么对应的输出是重复的数字2或者3。 思路分析 题目中数组长度为 n+1 ,而数字的范围为1 ~ n,说明数组中必然存在重复的数字,可以利... 阅读全文
posted @ 2019-08-05 02:29 这个世界~ 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 题目描述思路Java代码代码链接题目描述 在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。思路排序后再查找 ❎利用哈希表来解决问题,扫描数组中的数字,没扫到一个数字的时候将其加入哈希... 阅读全文
posted @ 2019-08-05 02:28 这个世界~ 阅读(122) 评论(0) 推荐(0) 编辑