BM53 缺失的第一个正整数描述给定一个无重复元素的整数数组nums,请你找出其中没有出现的最小的正整数进阶: 空间复杂度 ,时间复杂度 数据范围:示例1输入:[1,0,2]返回值:3Java实现代码:import java.util.*; public class Solution { public int minNumberDisappeared
BM52 数组中只出现一次的两个数字描述一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。数据范围:数组长度 ,数组中每个数的大小 要求:空间复杂度 ,时间复杂度 提示:输出时按非降序排列。示例1输入:[1,4,1,6]返回值:[4,6]说明:返回的结果中较小的数排在前面具体做法:step 1:遍历数
BM51 数组中出现次数超过一半的数字描述给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。数据范围:,数组中元素的值 要求:空间复杂度:,时间复杂度 输入描述:保证数组输入非空,且保证有解示例1输入:[
BM101 设计LFU缓存结构描述一个缓存结构需要实现如下功能。set(key, value):将记录(key, value)插入该结构get(key):返回key对应的value值但是缓存结构中最多放K条记录,如果新的第K+1条记录要加入,就需要根据策略删掉一条记录,然后才能把新记录加入。这个策略为:在缓存结构的K条记录中,哪一个key从进入缓存结构的时刻开始,被调用set或者get的
BM100 设计LRU缓存结构描述设计LRU(最近最少使用)缓存结构,该结构在构造时确定大小,假设大小为 capacity ,操作次数是 n ,并有如下功能:1. Solution(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存2. get(key):如果关键字 key 存在于缓存中,则返回key对应的value值,否则返回 -1 。3. set(k
BM97 旋转数组描述一个数组A中存有 n 个整数,在不允许使用另外数组的前提下,将每个整数循环向右移 M( M >=0)个位置,即将A中的数据由(A0 A1 ……AN-1 )变换为(AN-M …… AN-1 A0 A1 ……AN-M-1 )(最后 M 个数循环移至最前面的 M 个位置)。如果
NC83 连续子数组的最大乘积描述输入一个长度为n的整型数组nums,数组中的一个或连续多个整数组成一个子数组。求所有子数组的乘积的最大值。1.子数组是连续的,且最小长度为1,最大长度为n2.长度为1的子数组,乘积视为其本身,比如[4]的乘积为43.该题的数据保证最大的乘积不会超过int的范围,即不超过数据范围:示例1输入:[3,2,-1,4]返回值:6说明:子数组[3,2]的乘积为6,
BM79 打家劫舍(二)描述你是一个经验丰富的小偷,准备偷沿湖的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家,就不能再偷第二家,如果偷了第二家,那么就不能偷第一家和第三家。沿湖的房间组成一个闭合的圆形,即第一个房间和最后一个房间视为相邻。给定一个长度为n的整数数组nums,数组中的元素表示每个房间存有的现金数额,请你计算在不被发现的前提下最多
BM78 打家劫舍(一)描述你是一个经验丰富的小偷,准备偷沿街的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家,就不能再偷第二家;如果偷了第二家,那么就不能偷第一家和第三家。给定一个整数数组nums,数组中的元素表示每个房间存有的现金数额,请你计算在不被发现的前提下最多的偷窃金额。数据范围:数组长度满足 ,数组中每个值满足
BM75 编辑距离(一)描述给定两个字符串 str1 和 str2 ,请你算出将 str1 转为 str2 的最少操作数。你可以对字符串进行3种操作:1.插入一个字符2.删除一个字符3.修改一个字符。字符串长度满足 ,保证字符串中只出现小写英文字母。示例1输入:"nowcoder","new"返回值:6说明:"nowcoder"=>"newcoder"(将'o
BM74 数字字符串转化成IP地址描述现在有一个只包含数字的字符串,将该字符串转化成IP地址的形式,返回所有可能的情况。例如:给出的字符串为"25525522135",返回["255.255.22.135", "255.255.221.35"]. (顺序没有关系)数据范围:字符串长度 要求:空间复杂度 ,时间复杂度 注意:ip地址是由四段数字组成的数字序列,
BM73 最长回文子串描述对于长度为n的一个字符串A(仅包含数字,大小写英文字母),请设计一个高效算法,计算其中最长回文子串的长度。数据范围: 要求:空间复杂度 ,时间复杂度 进阶: 空间复杂度 ,时间复杂度 示例1输入:"ababc"返回值:3说明:最长的回文子串为"aba"与"bab",长度都为3Java代码import
BM71 最长上升子序列(一)描述给定一个长度为 n 的数组 arr,求它的最长严格上升子序列的长度。所谓子序列,指一个数组删掉一些数(也可以不删)之后,形成的新数组。例如 [1,5,3,7,3] 数组,其子序列有:[1,3,3]、[7] 等。但 [1,6]、[1,3,5] 则不是它的子序列。我们定义一个序列是 严格上升 的,当且仅当该序列不存在两个下标 &
BM70 兑换零钱(一)描述给定数组arr,arr中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个aim,代表要找的钱数,求组成aim的最少货币数。如果无解,请返回-1.数据范围:数组大小满足 , 数组中每个数字都满足 ,要求:时间复杂度 ,空间复杂度 。示例1输入:[5,2,
BM69 把数字翻译成字符串描述有一种将字母编码成数字的方式:'a'->1, 'b->2', ... , 'z->26'。现在给一串数字,返回有多少种可能的译码结果数据范围:字符串长度满足 进阶:空间复杂度 ,时间复杂度 示例1输入:"12"返回值:2说明:2种可能的译码结果(”ab” 或”l”)示例2输入:"317171262415417
BM68 矩阵的最小路径和描述给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。数据范围: ,矩阵中任意值都满足 要求:时间复杂度 例如:当输入[[1,3,5,9],[8,1,3,4],[5,0,6,1],[8,8,4,0
BM67 不同路径的数目(一)描述一个机器人在m×n大小的地图的左上角(起点)。机器人每次可以向下或向右移动。机器人要到达地图的右下角(终点)。可以有多少种不同的路径从起点走到终点?备注:m和n小于等于100,并保证计算结果在int范围内数据范围:,保证计算结果在32位整型范围内要求:空间复杂度 ,时间复杂度 进阶:空间复杂度 ,时间复杂度 示例1
BM66 最长公共子串描述给定两个字符串str1和str2,输出两个字符串的最长公共子串题目保证str1和str2的最长公共子串存在且唯一。 数据范围: 要求: 空间复杂度 ,时间复杂度 示例1输入:"1AB2345CD","12345EF"返回值:"2345"Java代码:import java.util.*; public class Solu
BM65 最长公共子序列(二)描述给定两个字符串str1和str2,输出两个字符串的最长公共子序列。如果最长公共子序列为空,则返回"-1"。目前给出的数据,仅仅会存在一个最长的公共子序列数据范围:要求:空间复杂度 ,时间复杂度 示例1输入:"1A2C3D4B56","B1D23A456A"返回值:"123456"示例2输入:"abc","def"返回值:"
BM64 最小花费爬楼梯描述给定一个整数数组 ,其中 是从楼梯第个台阶向上爬需要支付的费用,下标从0开始。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。数据范围:数组长度满足 ,数组中的值满足 示例1输入:[2,5,
BM63 跳台阶描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。数据范围:要求:时间复杂度: ,空间复杂度: 示例1输入:2返回值:2说明:青蛙要跳上两级台阶有两种跳法,分别是:先跳一级,再跳一级或者直接跳两级。因此答案为2示例2输入:7返回值:21Java代码import java.uti
BM62 斐波那契数列描述大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。斐波那契数列是一个满足 的数列数据范围:要求:空间复杂度 ,时间复杂度 ,本题也有时间复杂度 的解法输入描述:一个正整数n返回值描述:输出一个正整数。示例1输入:4返回值:3说明:根据斐波那契数列的定
BM61矩阵最长递增路径描述给定一个 n 行 m 列矩阵 matrix ,矩阵内所有数均为非负整数。 你需要在矩阵中找到一条最长路径,使这条路径上的元素是递增的。并输出这条最长路径的长度。这个路径必须满足以下条件:1. 对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外。2. 你不能走重复的单元格。即每个格子最多只能走一次。数据范围:,
BM60 括号生成描述给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合。例如,给出n=3,解集为:"((()))", "(()())", "(())()", "()()()", "()(())"数据范围:要求:空间复杂度 ,时间复杂度 示例1输入:1返回值:["()"]示例2输入:2返回值:["(())","()()"]Java代码
BM58 字符串的排列描述输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。数据范围:要求:空间复杂度 ,时间复杂度 输入描述:输入一个字符串,长度不超过10,字符只包括大小写字母。示例1输入:"ab"复制返回值:["
BM57 岛屿数量描述给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。岛屿: 相邻陆地可以组成一个岛屿(相邻:上下左右) 判断岛屿个数。例如:输入[[1,1,0,0,0],[0,1,0,1,1],[0,0,0,1,1],[0,0,0,0,0],[0,0,1,1,1]]对应的输出为3(注:存储的01数据其实是字符'0','1
BM56 有重复项数字的全排列描述给出一组可能包含重复项的数字,返回该组数字的所有排列。结果以字典序升序排列。示例1输入:[1,1,2]返回值:[[1,1,2],[1,2,1],[2,1,1]]示例2输入:[0,1]返回值:[[0,1],[1,0]]Java代码解析:import java.util.*; public class Solution { /** *
描述 BM55没有重复项数字的全排列 给出一组数字,返回该组数字的所有排列例如:[1,2,3]的所有排列如下[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2], [3,2,1].(以数字在数组中的位置靠前为优先级,按字典序排列输出。)数据范围:数字个数 要求:空间复杂度 ,时间复杂度 示例1输入:[1,2,3]返回值:[[1,
BM4(BM53) 缺失的第一个正整数描述给定一个无重复元素的整数数组nums,请你找出其中没有出现的最小的正整数进阶: 空间复杂度 ,时间复杂度 数据范围:示例1输入:[1,0,2]复制返回值:3复制示例2输入:[-2,3,4,1,5]返回值:2示例3输入:[4,5,6,8,9]返回值:1解析import java.util.*; public class So
BM3(BM52) 数组中只出现一次的两个数字描述一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。数据范围:数组长度 ,数组中每个数的大小 要求:空间复杂度 ,时间复杂度 提示:输出时按非降序排列。示例1输入:[1,4,1,6]返回值:[4,6]说明:返回的结果中较小的数排在前面示例2输入:[1,2,3,3,
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号