刷题
文章平均质量分 66
坚持刷题
沐漜
。懒惰,呵呵
展开
-
0006 - Z字形变换2022-04-20
将一个给定字符串s根据给定的行数numRows,以从上往下、从左到右进行Z 字形排列。比如输入字符串为"PAYPALISHIRING"行数为3时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:...原创 2022-04-20 14:16:25 · 385 阅读 · 0 评论 -
0005-最长回文子串2022年04月12日
给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"提示:1 <= s.length <= 1000 s仅由数字和英文字母组成/* * @lc app=leetcode.cn id=5 lang=java * * [5] 最长回文子串 * * https://leetcode-cn.com/proble.原创 2022-04-19 10:23:58 · 314 阅读 · 0 评论 -
2021年05月09日刷题
2021年05月09日刷题罗马数字转整数描述代码如下:罗马数字转整数难度:easy描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII原创 2021-05-10 10:45:57 · 251 阅读 · 2 评论 -
2021年05月06日刷题
2021年05月06日刷题回文数方法一:翻转一半数字思路回文数给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false原创 2021-05-06 22:48:21 · 133 阅读 · 1 评论 -
2021年05月04日刷题
2021年05月04日刷题整数翻转描述思路整数翻转难度:easy描述给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231,231−1][−2^{31},2^{31} − 1][−231,231−1],就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21原创 2021-05-04 17:00:33 · 207 阅读 · 4 评论 -
剑指offer每日一刷-2017年11月22日
数值的整数次方:题目描述:给定一个double类型的浮点数和int类型的整数exponent。求base的exponent次方。方法1:二分幂如计算base^exponent;如果exponent为偶数,则计算base^exponent/2(递归到exponent=0),再计算(base^exponent/2)*(base^exponent/2),就可以得出结果;如原创 2017-11-22 21:15:54 · 216 阅读 · 0 评论 -
剑指offer每日一刷-2017年11月24日(补2017年11月23日)
题目:调整数组顺序使奇数位于偶数前面题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。方法一:1.要保证原有顺序,只要顺次移动或相邻交换2.i从左到右遍历,找到第一个偶数3.j从i+1开始向后找,直到找到第一个奇数4.将[i,...,原创 2017-11-24 17:39:27 · 213 阅读 · 0 评论 -
剑指offer每日一刷-2017年11月24日
题目:链表中倒数第k个接点题目描述:输入一个链表,输出该链表中倒数第k个结点。/** * 链表的定义 */public class ListNode { int val; ListNode next=null; ListNode(int val){ this.val = val; }}方法一:创建两个指针pre和last,先让两者均指向头结原创 2017-11-25 11:06:21 · 169 阅读 · 0 评论 -
剑指offer每日一刷
题目名称:合并两个排序的链表。题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。链表定义:/* * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val){ * this.val原创 2017-11-26 16:07:27 · 172 阅读 · 0 评论 -
剑指offer每日一刷2017年12月5日
额 ,希望是每日一刷,但是最近比较忙,头也大了,就没有刷过了,有时间就刷刷,没有时间也刷刷,嘻唰唰,洗刷刷,何必活的那么糙。题目:树的子结构题目描述:输入两颗二叉树A,B,判断B是不是A的子结构。(PS(postscript):我们约定空树不是任意一个树的子结构)思路:参考剑指offer1.首先设置标志位result=false,因为一旦匹配成功result就设原创 2017-12-05 19:50:09 · 321 阅读 · 0 评论 -
剑指offer每日一刷-2017年11月16日
斐波那契数列:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n方法一:递归//递归,时间复杂度达到1000ms了,时间比较长,可以考虑使用循环 public int Fibonacci(int n){ if(n==0){ return 0; } if(n==1){ return 1;原创 2017-11-16 13:50:42 · 172 阅读 · 0 评论 -
求二进制数中1的个数
算法-求二进制数中1的个数(注意 负数)问题描述任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4这也是一道比较经典的题目了,相信不少人面试的时候可能遇到过这道题吧,下面介绍了几种方法来实现这道题,相信很多人可能见过下面的算法,但我相信很少有人见到本文中所有的算法。如果您上头上有更好的算法,或转载 2017-11-21 10:59:34 · 418 阅读 · 0 评论 -
剑指offer每日一刷-2017年11月21日
题目:二进制中1的个数题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。注意:这里是统计输入的整数的二进制表示中1的个数。方法一:使用移位运算符//该方法运行时间比较长//普通方法,使用移位运算符(带符号右移:>>,遇到负数时,由于高位是1,右移,高位补1;无符号右移:>>>,右移时,负数高位补0) public st原创 2017-11-21 10:45:30 · 254 阅读 · 0 评论 -
剑指Offer每日一刷 -2017年11月11日
题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。方法一:使用JDK API进行替换public class ReplaceBackspace { public String replaceSpace(StringBuffer str) { Strin原创 2017-11-11 15:09:56 · 250 阅读 · 0 评论 -
剑指offer每日一刷-2017年11月12日
输入一个链表,从尾到头打印链表每个节点的值。/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/原创 2017-11-12 15:57:51 · 196 阅读 · 0 评论 -
剑指offer每日一刷-2017年11月13日
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。注明:二叉树: 前序遍历:根节点 ->左子树 ->右子树 中序遍历:左子树 ->根节点 ->右子树 后序遍历:左子树 ->右子树 ->根节原创 2017-11-13 17:33:32 · 242 阅读 · 0 评论 -
剑指offer每日一刷-2017年11月17日
跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。方法一:使用递归recursive方法:F(n) = F(n-1) + F(n-2); (n>2)F(n) = n;(n=1,2);//使用递归recursive,运行时间为421ms public int JumpFloor(int target){ if(target <原创 2017-11-17 18:14:02 · 258 阅读 · 0 评论 -
剑指offer每日一刷-2017年11月14日
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:入队:将元素压入栈1出队:栈2为空时,将栈1中的所有元素弹出,一一压入栈2,之后弹出栈2的元素;栈2不为空时,直接弹出栈2的元素即可。public class StackQueue { Stack stack1 = new Stack(); Stack stack2原创 2017-11-14 16:50:55 · 137 阅读 · 0 评论 -
剑指offer每日一刷-2017年11月19日
题目:变态跳台阶,的确不是变态谁去跳台阶啊(如果遇到个变态要我跳台阶怎么办?额 ,是考我跳台阶,我跳是不跳呢?)题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。根据前一个题目跳台阶:青蛙只跳1或2可以得出是一个斐波那契问题,即a[n]=a[n-1]+a[n-2],那么能跳1,2,3个台阶时a[n]原创 2017-11-19 20:52:52 · 191 阅读 · 0 评论 -
剑指offer每日一刷-2017年11月20日
题目名称:矩形覆盖题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?从题目描述可知,这也是一道斐波那契数列的题目:f(n) = f(n-1)+f(n-2);/* * 题目描述 * 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。 * 请问用n个2*1的小矩形无重叠地覆盖一原创 2017-11-20 16:12:12 · 191 阅读 · 0 评论 -
动态规划入门教程
很特别的一个动态规划入门教程今天在网上看到一个讲动态规划的文章,于是转载一下下~~~附上原文地址:http://www.cnblogs.com/sdjl/articles/1274312.html通过金矿模型介绍动态规划 对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是转载 2017-11-20 23:01:11 · 154 阅读 · 0 评论 -
剑指offer每日一刷-2017年11月15日
旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路一:这是一道二分查找的变形的题目。旋转之后的数组实际上可以划分成两个有序的子数组原创 2017-11-15 21:02:25 · 154 阅读 · 0 评论 -
剑指Offer每日一刷 -2017年11月10日
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。二维数组的行数:array.length;二维数组的列数:array[0].length;两种思路:思路一:把每一行看成一个有序的递增数组,对每一行进行二分查找。注:二分查找:二分查找是一个基础的算法。二分查找原创 2017-11-10 22:05:18 · 171 阅读 · 0 评论