剑指
剽悍的人生不需要理由
这个作者很懒,什么都没留下…
展开
-
从尾到头打印链表
一、题目描述:二、解法一:(递归法)解题思路:不断遍历链表,递归的最里层是将最后一个元素3加到数组ret的最后,倒数第二层是将元素2加到数组ret最后,…,最后得到数组{3,2,1}。public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer&gt...原创 2019-03-13 22:11:49 · 71 阅读 · 0 评论 -
二进制中1的个数
一、题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。二、解题思路:解法一:采用按位与的方式进行,比如:n = 11011n-1 = 11010则:n&(n-1) = 11010,少了一个1,则按照此方法,直到全部的1消失。解法二:调用java中Integer.bitCount()函数,返回整数中二进制表示中1的个数。三、代码:解法一:publi...原创 2019-03-23 21:41:25 · 80 阅读 · 0 评论 -
删除链表中重复的结点
一、题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5二、解题思路:深刻教训:递归在算法题中的使用。本题首先判断链表中是否有节点以及是否存在唯一一个节点,然后判断重复节点是否为头结点,若为头节点,则采用whil...原创 2019-03-26 21:57:24 · 128 阅读 · 1 评论 -
机器人的运动范围
一、题目描述:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?二、解题思路:关键理解:机器人从坐标...原创 2019-03-23 15:20:34 · 93 阅读 · 0 评论 -
矩阵中的路径
一、题目描述:文字描述:设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb...原创 2019-03-22 21:05:22 · 87 阅读 · 0 评论 -
在 O(1) 时间内删除链表节点
一、题目描述:在 O(1) 时间内删除链表节点,链表形如下图所示:二、解题思路:首先创建一个链表类,根据上图所示,只有next链,分两种情况:1)删除的节点是非尾节点,此时,可将该节点下一个节点的值赋值给该节点,并让该节点指向下一节点的下一节点;2)删除的节点是尾节点,若此时链中只有一个节点,则直接删除,返回null即可,否则从头节点经过不断遍历,直至找到要删除的节点的前一个节点,假设为c...原创 2019-03-25 22:36:18 · 310 阅读 · 0 评论 -
动态规划-变态跳台阶
一、题目描述:一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级… 它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。二、解题思路:解法一:动态规划,定义一个动态数组dp[],跳上第一个台阶的跳法数量dp[0]=1;跳上第二个台阶的跳法数量dp[1]=2;跳上第三个台阶的跳法数量dp[2]=4;现在要跳上第四个台阶,可以先跳上第三个台阶,再经过一次跳跃(跳一个台阶)实...原创 2019-03-17 11:16:08 · 859 阅读 · 0 评论 -
旋转数组的最小数字(找断层点)
一、题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。通俗理解:将类似于{3,4,5,1,2}这样的数组找到其最小值,分为两种,一种是没有重复的数字,另一种是存...原创 2019-03-20 21:41:57 · 131 阅读 · 0 评论 -
斐波拉切数列--实例
一、矩形覆盖:1.题目描述:我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2n的大矩形,总共有多少种方法?2.解题思路:解法一:排列组合,假设竖方块的数量是y,横方块的数量是x,可知x+2y=target,用for循环遍历x,并用递归的方法对数量为x的横方块和数量为y的竖方块进行排列组合。(比较复杂)解法二:斐波那契数列,经过举例发现该问题符...原创 2019-03-17 10:40:25 · 1076 阅读 · 0 评论 -
斐波那契数列求值
一、题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39二、解题思路:解法一:递归,但使用递归会存在重复计算的问题,比如计算39,则需要计算38和37,计算38,则需要计算37和36,此时,37就被重复计算了。解法二:动态规划,利用数组加上for循环的方式。三、代码:解法一:public class Solu...原创 2019-03-16 20:08:24 · 475 阅读 · 0 评论 -
用两个栈实现队列
一、题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。二、解题思路:创建两个栈s1和s2,s1用于将队列需要增加的元素压入s1栈中,s2用于队列输出元素,当s2为空时,再将s1中的全部元素压入s2栈中,用于队列输出。三、代码:import java.util.Stack;public class Solution { Stack&l...原创 2019-03-16 17:17:16 · 84 阅读 · 0 评论 -
数组中重复的数字、二维数组中的查找、 替换空格(字符串)
一、数组中的重复数字1.题目描述:2.解题思路:3.代码:package sword;public class Repeat { public boolean duplicate(int[] nums, int length,int[] duplication) { if(nums == null || length &lt;= 0) { return false...原创 2019-03-10 09:34:18 · 465 阅读 · 0 评论 -
数值的整数次方
一、题目描述:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。二、解题思路:解法一:for循环迭代实现。解法二:递归法实现,每次递归,exponent都减小为原来的1/2,故时间复杂度为O(logN)。三、代码:解法一: public double Power(double base, int exponent) ...原创 2019-03-24 11:09:42 · 70 阅读 · 0 评论