随笔分类 - 算法
摘要:给你 k 枚相同的鸡蛋,并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑。 已知存在楼层 f ,满足 0 ⇐ f ⇐ n ,任何从 高于 f 的楼层落下的鸡蛋都会碎,从 f 楼层或比它低的楼层落下的鸡蛋都不会破。 每次操作,你可以取一枚没有碎的鸡蛋并把它从任一楼层 x 扔下(满足 1 ⇐
阅读全文
摘要:链接 给定一个正数数组arr,其中所有的值都为整数,以下是最小不可组成和的概念 把arr每个子集内的所有元素加起来会出现很多值,其中最小的记为min,最大的记为max 在区间[min, max]上,如果有数不可以被arr某一个子集相加得到,那么其中最小的那个数是arr的最小不可组成和 在区间[min
阅读全文
摘要:链接 给定一个正数数组arr,其中所有的值都为整数,以下是最小不可组成和的概念 把arr每个子集内的所有元素加起来会出现很多值,其中最小的记为min,最大的记为max 在区间[min, max]上,如果有数不可以被arr某一个子集相加得到,那么其中最小的那个数是arr的最小不可组成和 在区间[min
阅读全文
摘要:想象一下你是个城市基建规划者,地图上有 N 座城市,它们按以 1 到 N 的次序编号。 给你一些可连接的选项 conections,其中每个选项 conections[i] = [city1, city2, cost] 表示将城市 city1 和城市 city2 连接所要的成本。(连接是双向的,也就
阅读全文
摘要:有 n 个网络节点,标记为 1 到 n。 给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] = (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。 现在,从某个节点 K 发出一个信号。需要多久才能使所有节点
阅读全文
摘要:「快乐前缀」是在原字符串中既是 非空 前缀也是后缀(不包括原字符串自身)的字符串。 给你一个字符串 s,请你返回它的 最长快乐前缀。 如果不存在满足题意的前缀,则返回一个空字符串。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest
阅读全文
摘要:链接 给一个全是小写字母的字符串str,删除多余字符,使得每种字符只保留一个,并且让最终结果字符串字典序最小。 import java.util.Scanner; public class Main { private static String solve(char[] str) { if (st
阅读全文
摘要:给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" 。 返回可以通
阅读全文
摘要:实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须 原地 修改,只允许使用额外常数空间。 来源:力扣(LeetCode) 链接:https://leet
阅读全文
摘要:给出两个整数 n 和 k,找出所有包含从 1 到 n 的数字,且恰好拥有 k 个逆序对的不同的数组的个数。 逆序对的定义如下:对于数组的第i个和第 j个元素,如果满i < j且 a[i] > a[j],则其为一个逆序对;否则不是。 由于答案可能很大,只需要返回 答案 mod 109 + 7 的值。
阅读全文
摘要:给定一个正整数M,请构造出一个长度为M的数组arr,要求 对任意的i、j、k三个位置,如果i<j<k,都有arr[i] + arr[k] != 2*arr[j] 返回构造出的arr public class MakeNo { // 生成长度为size的达标数组 // 达标:对于任意的 i<k<j,满
阅读全文
摘要:长度为N的数组arr,一定可以组成N^2个数值对。 例如arr = [3,1,2], 数值对有(3,3) (3,1) (3,2) (1,3) (1,1) (1,2) (2,3) (2,1) (2,2), 也就是任意两个数都有数值对,而且自己和自己也算数值对。 数值对怎么排序?规定,第一维数据从小到大
阅读全文
摘要:给你一个整数数组 nums 和一个整数 k ,找出 nums 中和至少为 k 的 最短非空子数组 ,并返回该子数组的长度。如果不存在这样的 子数组 ,返回 -1 。 子数组 是数组中 连续 的一部分。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/proble
阅读全文
摘要:在字典(单词列表) wordList 中,从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列: 序列中第一个单词是 beginWord 。 序列中最后一个单词是 endWord 。 每次转换只能改变一个字母。 转换过程中的中间单词必须是字典 wordList 中
阅读全文
摘要:峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] = nums[n] = -∞ 。 你必须实现时间复杂度为 O(log n) 的算法来解决此问题。 来
阅读全文
摘要:整型数组arr长度为n(3 ⇐ n ⇐ 10^4),最初每个数字是<=200的正数且满足如下条件: arr[0] ⇐ arr[1] 2.arr[n-1] ⇐ arr[n-2] arr[i] ⇐ max(arr[i-1], arr[i+1]) 但是在arr有些数字丢失了,比如k位置的数字之前是正数,丢
阅读全文
摘要:链接 给定三个字符串str1、str2 和aim,如果aim包含且仅包含来自str1和str2的所有字符,而且在aim中属于str1的字符之间保持原来在str1中的顺序属于str2的字符之间保持原来在str2中的顺序,那么称aim是str1和str2的交错组成。实现一个函数,判断aim是否是str1
阅读全文
摘要:链接 给定一个只由0(假)、1(真)、&(逻辑与)、|(逻辑或)和^(异或)五种字符组成的字符串express,再给定一个布尔值desired。求出express能有多少种组合方式,可以达到desired的结果。并输出你所求出的总方案数。 import java.util.Scanner; publ
阅读全文
摘要:给你一个整数数组 nums 以及两个整数 lower 和 upper 。求数组中,值位于范围 [lower, upper] (包含 lower 和 upper)之内的 区间和的个数 。 区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 i 和 j (i ≤ j)。
阅读全文
摘要:链接 N皇后问题是指在N*N的棋盘上要摆N个皇后,要求任何两个皇后不同行,不同列也不再同一条斜线上,求给一个整数n,返回n皇后的摆法。 import java.util.Scanner; public class Main { private static int doJob(int limit,
阅读全文

浙公网安备 33010602011771号