![](https://img-blog.csdnimg.cn/20200307173735693.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Leetcode
文章平均质量分 57
数据结构与算法练习,Leetcode SQL练习题等等
ZWZhangYu
这个作者很懒,什么都没留下…
展开
-
【Leetcode】914. 卡牌分组
文章目录【题目】【题目分析】【代码实践】【题目】此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。示例 1:输入:[1,2,3,4,4,3,2,1]输出:true解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]示例 2:输入:[1,1,1,2,2,2,3,3]输出:false解释:没有满足要求的分组。示例 3:输入:[1]输出原创 2021-01-17 20:50:14 · 1695 阅读 · 0 评论 -
2. Add Two Numbers
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.You may assume the two numbers do no原创 2020-06-06 21:42:55 · 1695 阅读 · 0 评论 -
链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点解题思路本题的思路和之前看矩形那一题有相似之处,就是我们优先考虑边界情况,比如本题,我们需要查找链表中的倒数第K个节点,那么想象此时身处链表最后的位置,我想要知道前面K个位置的结点.就像是跑步一样,我先到达终点.但是要保证我每次都要先到达终点,且我和后面的人速度要一致,所以只有我先走了K步,才能始终保证我到达终点时,对手在倒数第K个位置,也就...原创 2020-02-22 21:13:56 · 1094 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路使用额外数组,以空间换时间创建俩个数组,一个为奇数组一个为偶数组,循环一次原数组,使用位运算判断奇偶性插入奇数组或者偶数组,然后使用Java的本地方法完成数组的复制 public void reOrder...原创 2020-02-21 23:54:59 · 1049 阅读 · 0 评论 -
数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0解题思路本题描述的是求数值的次方,该题描述也正是JDK中Math.pow(a,b)方法这里给出俩个解法:第一个解法是:使用循环不停的迭代乘积,然后返回累计的结果.注意对于指数为负数的情况考虑 public double Powe...原创 2020-02-21 23:54:03 · 1186 阅读 · 0 评论 -
二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解题思路如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会受到影响。举个例子:一个二进制数1100,从右边数起第三位是处于最右边的一个1。减去1后,第三位变成0,它后面的两位0变...原创 2020-02-21 23:52:53 · 1168 阅读 · 0 评论 -
矩形覆盖
题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2n的大矩形,总共有多少种方法?比如n=3时,23的矩形块有3种覆盖方法:解题思路2n的大矩形,和n个21的小矩形有以下几种情形:1:target <= 0 大矩形为<= 20,直接return 1;2:target = 1,只有一种摆放方法,return1;3:targ...原创 2020-02-20 23:07:23 · 1084 阅读 · 0 评论 -
变态跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法.解题思路1:首先把这一题和前一题跳台阶放在一起看,跳台阶是只可以条1次和2次,那么f(n)=f(n-1)+f(n-2)2:上述形成的图形是一颗二叉树,那么对于本题而言,每次可以跳1…n次,即是对于上一题的扩展,它所形成的图形就是一颗树,如果是N,那么就是N-1叉的树3:根...原创 2020-02-20 21:23:26 · 1074 阅读 · 0 评论 -
跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)解题思路跳台阶问题,我们可以从后往前看,如果共有N阶台阶,那么最后一次只能在N-1和N-2的位置,直到1和2时结束,该题的类似于斐波那契数列| 1, (n=1)f(n) = | 2, (n=2)| f(n-1)+f(n-2) ,(n>2,n为整数)...原创 2020-02-20 21:22:42 · 1065 阅读 · 0 评论 -
斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).n<=39解题思路这个数列从第3项开始,每一项都等于前两项之和1、1、2、3、5、8、13、21、34斐波那契数列的标准公式为:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)注意这里从第0项开始,要考虑到n=o的情况,还有...原创 2020-02-20 21:21:46 · 1082 阅读 · 0 评论 -
旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.NOTE:给出的所有元素都大于0,若数组大小为0,请返回0解题思路输入参数为递增数组的若干元素旋转后数组,虽然经过旋转,但是这个数组也是相对性一个递增有序的数组,关键在...原创 2020-02-20 21:20:42 · 1020 阅读 · 0 评论 -
用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.解题思路栈:先入后出队列:先入先出此时我们有俩个栈,其中一个栈负责数据的插入,但此时肯定是无法保证队列特性,因此需要借助另一个栈,需要将栈1的数据放入栈2中,然后再弹出栈2栈顶数据就满足先入先出特性了.1:在入栈时,直接插入 stack12:当弹出时,当 stack2 不为空,弹出 stack...原创 2020-02-20 21:19:44 · 1107 阅读 · 0 评论 -
重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回解题思路递归构建二叉树.1. 分析根据中序遍历和前序遍历可以确定二叉树,具体过程为:根据前序序列第一个结点确定根结点根据根结点在中序序列中的位置...原创 2020-02-20 21:19:07 · 2089 阅读 · 0 评论 -
从尾到头打印链表
题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList.解题思路这里使用俩种方式,第一种方式递归,即到达空节点null时为终止条件返回执行前面的方法,添加数据;第二种方式栈,由于栈具有后入先出的特性,所以可以对链表进行遍历依次入栈然后在依次出栈,时间复杂度O(n)//链表结构class ListNode { int val; ListNode next = ...原创 2020-02-20 21:18:13 · 1224 阅读 · 0 评论 -
替换空格
题目描述【字符串】请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy代码描述注意字符类型和字符串的类型的比较,equals()和==public class Solution { public String replaceSpace(StringBuffer str) { ...原创 2020-02-20 21:16:56 · 1024 阅读 · 0 评论 -
二维数组的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解:由于每一行是有序递增的数组, 利用循环遍历和二分查找, 通过遍历每一行得到答案, 时间复杂度是nlogn还有一种方法: 思路:矩阵是有序的,从左下角来看,向上数字递减,向右数字递增,因此...原创 2018-08-03 09:03:00 · 1066 阅读 · 0 评论