java刷题(剑指offer/LeetCode)
文章平均质量分 50
记录的刷题的联系,编程联系可参考,面试时可能会用到
wilson_m
这个作者很懒,什么都没留下…
展开
-
【LeetCode】3、无重复字符的最长子串
题目链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/变更:无重复子串的最长子串的内容(求子串,原题求子串长度)思路:双指针滑动窗口法思路分析示例:以frankissohandsome为例,我们要从中找出我们想要的子串,那少不了需要遍历,我们设置两个变量from,to,分别存储寻找的目标子串在原字符串中的首尾位置。首先,from和to的初始值都为0(String的序号从0开始)原创 2021-06-21 22:27:09 · 369 阅读 · 2 评论 -
【LeetCode】150.逆波兰表达式求值
题目描述根据 逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。示例 1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: 该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入: ["4", "13", "5", "/", "+"]输出: 6解释: 该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6示例 3:输入: ["10",原创 2020-10-10 15:06:01 · 135 阅读 · 0 评论 -
【LeetCode】 20.有效的括号
题目描述: 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"原创 2020-09-24 21:26:57 · 173 阅读 · 0 评论 -
【LeetCode】树的深度(104、111)
树的最小深度题目描述1:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.题目链接:二叉树的最小深度树的最大深度题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子原创 2020-08-25 16:58:11 · 137 阅读 · 0 评论 -
统计字符串中首先出现3次的字符
题目描述 用户输入一个英文的字符串,写一段代码找出这个字符串中首先出现三次的那个英文字符。输入描述 用户输入一个英文的字符串。输出描述 输出首先出现三次的那个英文字符。实例 输入: Have you ever gone shopping and 输出: enext与nextLine的区别 用户通过Scanner类原创 2017-12-18 09:23:18 · 1545 阅读 · 0 评论 -
java实现—n阶奇数幻方
奇数阶幻方: 奇数阶幻方指的是有一个行数和列数都相等的数据组成一个方阵,即由1~n*n个数据组成,由于是奇数阶幻方,所以阶数n必须是奇数。其要求为:每行、每列和对角线上的数据之和相等。法国人罗伯总结出了构造奇数阶连续自然数幻方的简单易行的方法“罗伯法”。口诀如下:一居上行正中央:第一个数字放在首行最中间的格子中;依次斜填切莫忘:向右上角斜行按照从小到大的顺序依次填入数字;上出框时向下放:如原创 2017-11-27 11:25:24 · 3719 阅读 · 1 评论 -
【LeetCode】面试题 08.05.递归乘法
题目描述:递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。示例1:输入:A = 1, B = 10输出:10示例2:输入:A = 3, B = 4输出:12题目链接:递归乘法Java题解:题解1:投机取巧法乘法的本质上是累加,将乘法转化为加法public class RecursionMutiply { public static int multiply(int A, int B) { if(原创 2020-08-20 15:26:01 · 393 阅读 · 0 评论 -
【排序算法】选择排序--Java实现
1、基本思想选择排序是一种简单直观的排序算法,其基本原理如下:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录的位置与第一个记录的位置交换;接着对不包括第一个记录以外的其他记录进行第二次比较,得到最小记录并与第二个位置记录交换;重复该过程,直到进行比较的记录只剩下一个为止。2、复杂度分析从简单选择排序的过程来看,它最大的特点是交换移动数据次数相当少,这样就节约了相应...原创 2018-05-02 14:54:13 · 182 阅读 · 0 评论 -
【LeetCode】15.3个数之和
题目描述给定n个整数的一个数组S,S中是否有元素a、b和c满足a+b+c=0?找出数组中所有满足加和为0的不同的三个数组合。注意,(a,b,c)中的元素必须是非降序的排列方式(即,a<=b<=c)解决方案中给出的集合不能包含重复的三元组。输入实例例如,给定数组S={-1 0 1 2 -1 4}输出实例一个解决方案集合是: (-1, 0,1) (-...原创 2018-03-24 22:26:45 · 460 阅读 · 0 评论 -
算法1-两数之和
题目描述 给定整数的一个数组,找出这样的两个数,他们的加和等于一个特定的目标数字(target)。 twoSum函数应当返回两个数的索引,这两个数相加等于目标数字,其中index1必须小于原创 2018-03-24 20:17:17 · 270 阅读 · 0 评论 -
【剑指offer】和为S的连续正数序列--Java实现
题目链接:和为S的连续正数序列题目描述:输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1~5、4~6和7~8。输入示例:15由于1+2+3+4+5=4+5+6=7+8=15,所以打印出三个连续序列:1,2,3,4,5;4,5,6;7,8输出示例:1,2,3,4,5;4,5,6;7,8结题思路:连续序列,可以与数学方面的等差数列相结合,输入示例等于等差序列求和的值,转换为求取对应的等差序原创 2020-07-23 14:44:09 · 174 阅读 · 0 评论 -
【剑指offer】用两个栈实现队列--java
题目链接: 使用两个栈实现队列题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。实现思路:两个栈,命名为Stack1和Stack2,队列Quene其中队列Quene在入队操作时,将所需要的入队元素在Stack1中进行入栈;在出队操作时,需要将Stack1栈中的栈顶元素进行依次出栈,并入栈到Stack2中,队列弹出队时,将Stack2栈中的栈顶元素进行出栈java代码实现:public class AchieveQuene { static原创 2020-07-20 09:29:37 · 114 阅读 · 0 评论 -
【剑指offer】从尾到头打印链表
题目链接:https://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035?tpId=13&tags=&title=&diffculty=0&judgeStatus=0&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking题目描述:输入一个链表,按链表值从尾到头的顺序返回原创 2020-07-16 21:05:54 · 100 阅读 · 0 评论 -
【剑指offer】二维数组的查找
题目链接:https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e?tpId=13&tags=&title=&diffculty=0&judgeStatus=0&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左原创 2020-07-16 20:51:20 · 135 阅读 · 0 评论 -
【LeetCode】1、两数之和--java实现
题目链接:https://leetcode-cn.com/problems/two-sum/思路:通过hashmap解决,两数中的一个数(数值1)在hashmap存在,目标值-数值1中在hashmap中同样存在时,即符合要求。hashmap提供了containsKey方法,我们可以将key作为目标值,value作为对应目标值在数组中的下标java代码如下: private static int[] getTwoSum(int[] num, int target) { Hash原创 2020-07-16 17:44:52 · 181 阅读 · 0 评论 -
用户输入的数字转化为二进制后中数字1的个数
二进制转化求数字中数字1的个数方法1:内置toBinaryString方法 通过java的内置toBinaryString方法,此方法返回int变量的二进制表示的字符串。方法2:位运算实现 将n与n-1做与运算,会把最右边的1去掉。原创 2017-12-17 22:39:33 · 361 阅读 · 0 评论 -
用户输入的字符串中空格的替换
实现一个函数,将用户输入的字符串中的空格替换为“%20”。 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 &am原创 2017-12-16 22:05:30 · 375 阅读 · 0 评论 -
整数中1出现的次数
题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。输入实例117输出实例110输入实例239输出实例214Java代...原创 2018-03-22 16:41:03 · 202 阅读 · 0 评论 -
旋转数组中的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。以下有两个方法,第一个方法用来求旋转数组中的最小值。第二种方法求旋转数组中最小值以及数组旋转前最小值在数组...原创 2018-03-22 17:11:34 · 188 阅读 · 0 评论 -
青蛙跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。java代码public int JumpFloor(int target) { if(target<=0){ return -1; }else if(target<=2){ return targ...原创 2018-03-24 10:12:08 · 179 阅读 · 0 评论 -
斐波拉契数列
题目描述用户输入一个整数n,输出菲波拉契数列的第n项java核心代码public int Fibonacci(int n) { if(n<=1){ return n; } int f1 = 1;//f1保存的是第i-1项 int f2 = 0;//f1保存的是第i-2项 i...原创 2018-03-22 09:12:37 · 267 阅读 · 0 评论 -
n个整数中最小的K个数
题目描述输入n个整数,找出其中最小的K个数。输入示例例如输入4,5,1,6,2,7,3,8这8个数字,k=4输出实例则最小的4个数字是1,2,3,4。方法一思路如下: 找出当前k个元素中最大值的索引值,剩余n-k中的值一次与当前list中最大值作比较,如果小于最大值,则将当前值替换最大值索引处的值,依次循环,最后list中前k个元素为最小值。java代...原创 2018-03-20 16:14:24 · 575 阅读 · 0 评论 -
java魔法币问题
小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。 魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币 魔法机器2:如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币 小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需原创 2017-12-16 22:23:15 · 582 阅读 · 0 评论 -
第一个只出现一次的字符
题目描述在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置java代码public int FirstNotRepeatingChar(String str) { if(str==null||str.length()==0){ return -1; }...原创 2018-03-22 09:36:47 · 153 阅读 · 0 评论 -
调整数组元素顺序
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。输入实例[1,2,3,4,5,6,7]输出实例[1,3,5,7,2,4,6]以下实现了两个方法,一个是带返回值的,另一个是不带返回值的。带返回值的可以直接输出查看结果是否正确,不带返回值的...原创 2018-03-22 10:34:22 · 6066 阅读 · 0 评论 -
把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。输入实例输入数组{3,32,321}输出实例打印出这三个数字能排成的最小数字为321323。设计思路先将整型数组转换成String数组,然后将String数组排序,最后将排好序的字符串数组拼接出来。关键就是制定排序规则。排序规则如下:若ab > b...原创 2018-05-06 15:33:40 · 190 阅读 · 0 评论 -
【Java】如何求最大子数组之和
问题描述&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一个有n个元素的数组,这n个元素可以是正数也可以是负数,数组中连续的一个或多个元素可以组成一个连续的子数组,一个数组可能有多个这种连续的子数组,求子数组和的最大值。输入示例输入数组{1,-2,4,8,-4,7,-1,-5}输出示例最大值:15 其最大和的子数组为{4,8,-4,7}原创 2018-08-28 17:33:04 · 4091 阅读 · 2 评论 -
java键盘输入的空格替换
题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。输入实例 We Are Happy输出实例 We%20Are%20Happy源代码 用户自定义方法实现。package experie;import java.util.Scanner;public class Solution { pu原创 2017-12-29 10:09:30 · 801 阅读 · 0 评论