
编程题
谁动了我的小老弟
这个作者很懒,什么都没留下…
展开
-
怎么最快判断一个数是不是2的幂-Java实现
2. 怎么最快判断一个数是不是2的幂简单的分析一下吧:从二进制的角度来看,凡是是2的幂的数,它的最高位一定是1,其余位都为0即:0000001000000……00000,如果我们用这个数减一的话,它的二进制为0000000111111……11111,所以快速的判端一个数是不是2的幂可以用简单的位运算 n&(n-1)代码如下:import java.util.Scanner;...原创 2018-12-17 19:58:25 · 236 阅读 · 0 评论 -
机器人的运动范围-Java实现
14. 机器人的运动范围问题描述:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?分析:这道题还...原创 2019-01-02 15:25:47 · 426 阅读 · 0 评论 -
剪绳子 - 动态规划 - Java实现
15. 剪绳子 - 动态规划问题描述给你一根长度为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.分析1、比如有一段长度为n的绳子,我们现在要剪第一刀,我可以选择下第...原创 2019-01-10 19:52:28 · 908 阅读 · 0 评论 -
剪绳子 - 贪婪算法 - Java实现
16. 剪绳子 - 贪婪算法问题描述给你一根长度为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.分析n<2时,返回0;n=2时,返回1;n=3时,返回2根据...原创 2019-01-11 16:43:48 · 436 阅读 · 0 评论 -
二进制中的1的个数 - Java实现
17. 二进制中的1的个数问题描述请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。分析一个数内部都是0 1 ,我们要检测内部 1 的个数的话我们可以将这个数不断右移,直到它为0 为止,提一下,这个是错误的,正数可以做出来,负数呢,右移之后补1 ,死循环了啊,扑街常规解法我们可以设置一个数 从1 ...原创 2019-01-22 16:42:37 · 151 阅读 · 0 评论 -
删除链表中的节点 - Java实现
18. 删除链表中的节点问题描述给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。单向链表的定义如下:class ListNode{ int m_nValue; ListNode next; public ListNode() { this.next = null; }}分析在O(1)的时间内,我们要删除一个节点的话,如果我们遍历链表找到这...原创 2019-01-22 16:43:18 · 2436 阅读 · 0 评论 -
调整数组顺序是奇数位于偶数前面 - Java实现
19. 调整数组顺序是奇数位于偶数前面问题描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,是的所有奇数位于数组的前半部分,所有偶数位于数组的后半部分问题分析我们维护了两个指针,一个 start 指针指向数组头,一个 end 指针指向数组尾。下面开始我们的判断内容:保证 start < end如果满足 1 的情况下 start 指向第一个偶数(start是从前往后)...原创 2019-02-14 16:37:53 · 216 阅读 · 0 评论 -
奇偶链表 - Java实现
题目描述给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例1输入: 1->2->3->4->5->NULL输出: 1->3->5->2...原创 2019-04-07 22:31:11 · 215 阅读 · 0 评论 -
分隔链表 - Java实现
21. 分隔链表题目描述给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。返回一个符合上述规则的链表的列表。举例: 1->2->3->4, ...原创 2019-04-08 11:34:30 · 243 阅读 · 0 评论 -
两数之和 - Java实现
23. 两数之和题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, ...原创 2019-04-08 13:32:03 · 206 阅读 · 0 评论 -
矩阵中的路径-Java实现
13. 矩阵中的路径问题描述:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串”bcced”的路径,但是矩阵中不包含”abcb”路径,因为...原创 2019-01-01 06:53:16 · 199 阅读 · 0 评论 -
旋转数组的最小数字-Java实现
12. 旋转数组的最小数字问题描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。很容易我们想到的是,从头到尾遍历一次数据,我们就找出了最小值,时间复杂度是O(n),但是我们一点都没有用到旋转数组的特性.分析旋转数组,其实...原创 2018-12-28 20:16:17 · 249 阅读 · 0 评论 -
用两个栈实现一个队列-Java实现
11. 用两个栈实现一个队列问题描述:用两个栈实现一个队列。队列的声明如下:请实现他的两个函数appendTail和deleteHead, 分别完成在队列尾部插入节点和在队列头部删除节点的功能。其中队列的声明如下,请自行补充appendTail()和deleteHead()函数public class Queue<T> { private Stack<T> s...原创 2018-12-26 17:17:02 · 308 阅读 · 0 评论 -
如何快速的判断一个数是否是偶数-Java实现
1. 如何快速的判断一个数是否是偶数分析:我们的第一想法一定是这个数取余2 为0 则是偶数,为 1 则是奇数代码如下:import java.util.Scanner;/** * Class day01 ... * * @author LiJun * Created on 2018/12/17 *///如何快速的判断一个数是否是偶数 public clas...原创 2018-12-17 19:29:37 · 13504 阅读 · 0 评论 -
找出数组中的重复数字-Java实现
3. 找出数组中的重复数字给定一个长度为n的数字,所有的数都在0~n-1的范围内,数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次,请找出数组中任意一个重复的数字。例如:输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},那么对应的输出是重复的数字2或者3注意题:只需要找出任意一个,下面我的部分方法会把全部的重复数字找出来,看看就得了重点在于第二个方法,...原创 2018-12-18 21:05:12 · 470 阅读 · 0 评论 -
不修改数组找出重复的数字-Java实现
4. 不修改数组找出重复的数字问题描述:在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的。请找出数组中任意一个重复的数字,但是不能修改输入的数组。例如,如果输入长度为8的数组{2,3,5,4,3,2,6,7},那么对应的输出是重复的数字2或者3。解决方法:1. 辅助数组昨天的题中,我使用了辅助数组的算法来实现找重复数,这次也是一样,我们不能修改原数...原创 2018-12-19 17:44:37 · 445 阅读 · 0 评论 -
二维数组中的查找-Java实现
5. 二维数组中的查找问题描述:在一个二维数组中,每一行元素都按照从左到右递增的顺序排序,每一列元素都按照从上到下递增的顺序排序。实现一个查找功能的函数,函数的输入为二维数组和一个整数,判断数组中是否含有该整数。例子:如果查找7 ,返回false,如果查找5,返回false。问题分析:假设数组 a[m][n] , 由题意,a[i][j] 肯定小于a[i][j+1]~a[i][n]...原创 2018-12-20 20:54:16 · 393 阅读 · 0 评论 -
替换空格-Java实现
6. 替换空格题目:请实现一个函数,把字符串中的每个空格替换成“20%”。例如输入“hellow new world!”,则输出“hellow02%new02%world!”。分析:正常我们会想到,在基础上遍历这个字符串,遇到空格就将其和其后两位改成 ‘%20’ ,但是这会造成大量的移动开一个辅助数组,来进行在原字符串上,从后遍历,然后替换(推荐)/** * Class ...原创 2018-12-22 18:24:42 · 247 阅读 · 0 评论 -
从尾到头打印链表-Java实现
7. 从尾到头打印链表题目:输入一个链表的头结点,从尾到头反过来打印出每个节点的值注:在做着道题之前,我先把我用java实现链表的代码贴出来(只简单的实现了增删改查,复杂的自己写):import java.util.ArrayList;import java.util.List;/** * Class Node ... * * @author LiJun * Created...原创 2018-12-22 19:44:28 · 132 阅读 · 0 评论 -
求斐波那契数列的第n项-Java实现
8. 求斐波那契数列的第n项我也不解释了,这个提到了很多,直接上代码:import java.math.BigInteger;/** * Class day08 ... * * @author LiJun * Created on 2018/12/23 */// 求斐波那契数列的第n项public class day08 { // 递归实现,但是没意思,复杂了 ...原创 2018-12-23 19:36:41 · 980 阅读 · 0 评论 -
重建二叉树-Java实现
9. 重建二叉树问题描述:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树,假设输入的前序遍历和终须遍历的结果中都不包含重复的数字。例如:前序遍历序列{1, 2, 4, 7, 3, 5, 6, 8};中序遍历序列{4, 7, 2, 1, 5, 3, 8, 6};二叉树节点定义如下:public static class Node { public int value;...原创 2018-12-25 14:15:16 · 157 阅读 · 0 评论 -
二叉树的下一个节点-Java实现
10. 二叉树的下一个节点问题描述:给定一棵二叉树和其中一个节点,如何找出中序遍历序列的下一个节点?书中的节点除了有两个分别执行左、右节点的指针,还有一个执向父节点的指针。例如:给定中序遍历的序列是{d, b,h,e,i,a,f,c,g}.二叉树:分析:前序遍历的结果是左根右如果给定的这个节点,没有右子树,那么它的下一个节点,必定要追溯到它的父节点去找如果给定的这个节点,有右子...原创 2018-12-25 21:39:19 · 502 阅读 · 1 评论 -
两数相加-链表 - Java实现
24. 两数相加-链表题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:...原创 2019-04-08 14:32:19 · 305 阅读 · 0 评论