
Daily Practice
白小T~
每天学习一个知识点,十年之后我也是大牛。
展开
-
[Daily Practice] -切木头(二分)
问题描述有M段木头,长度用数组L表示,现在需要切成K段长度为J的木头,也可以大于K,要使得J尽量的大例:L[232,124,456] K=7,输出J =114232 --> 114+114+4124 --> 114 + 10456 --> 114+114+114 + 114解决方案public class Test8 { public static void main(String[] args) { // 木头长度数组 int[] l原创 2021-11-24 16:08:57 · 322 阅读 · 0 评论 -
打家劫舍【动态规划】
问题描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1] 输出:4 解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。 示例 2:输入:[2,原创 2021-06-11 17:20:08 · 78 阅读 · 0 评论 -
解数独
代码public class Sudoku { private int[][] matrix; public SudokuV2(int[][] matrix) { this.matrix = matrix; } public static void main(String[] args) { // 号称世界上最难数独 int[][] sudoku = { {8, 0, 0, 0, 0, 0原创 2020-09-16 07:56:13 · 151 阅读 · 0 评论 -
随机生成一个数独与一个不完整数独
代码public class Sudoku { public static void main(String[] args) { int[][] done = create(); int[][] problem = getProblemSudoku(done); System.out.println("============================= 未完成的数独 =============================");原创 2020-09-16 07:53:07 · 283 阅读 · 0 评论 -
[Daily Practice] -24点游戏判断成立与计算公式打印
问题描述输入一行数字,以一个空格隔开,每行4个数字,判断用这4个数字进行加减乘除预算,最终能否得到24,如果能,则输出YES 并输出计算公式,如果不能得到24,则输出NO。读题例:输入:1 5 5 5输出:(5-(1/5))*5YES代码public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamRea原创 2020-07-04 07:55:15 · 286 阅读 · 0 评论 -
[Daily Practice] -最长回文子串
问题描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"该题目来源于leetcode,点击进入解题 public static String longestPalindrome(String s) { int len = s.length(); // 特判 if原创 2020-05-21 22:07:58 · 143 阅读 · 0 评论 -
[Daily Practice] -盛最多水的容器
问题描述给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(...原创 2020-04-18 13:55:32 · 133 阅读 · 0 评论 -
[Daily Practice] -鸡蛋掉落问题
问题描述你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或...原创 2020-04-11 23:24:37 · 262 阅读 · 0 评论 -
[Daily Practice] -门牌号左右之和相等的问题
问题描述程序员小明住在一个从1开始编号的街道上,每天他都从家开始往左走或者往右走遛狗,知道走到尽头再回家,经过几天后,他发现无论往左还是往右,路过的门牌号之和相等,请举例1000以内所有的这样的街道和小明的门牌号的整数对。读题例:小明住6号,最大门牌号81+2+3+4+5 = 7+8代码时间不够 先贴代码HashMap<Integer,Integer> mapa = n...原创 2020-04-10 13:47:17 · 1335 阅读 · 3 评论 -
[Daily Practice] -括号生成问题
问题描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。该题目来源于leetcode,点击进入读题示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]代码 public sta...原创 2020-04-09 20:56:09 · 107 阅读 · 0 评论 -
[Daily Practice] -旋转矩阵
问题描述给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?该题目来源于leetcode,点击进入读题示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9...原创 2020-04-07 22:56:27 · 2393 阅读 · 0 评论 -
[Daily Practice] -最小编辑距离问题
问题描述给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符该题目来源于leetcode,点击进入读题示例 1:输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替...原创 2020-04-06 11:53:58 · 155 阅读 · 0 评论 -
[Daily Practice] -最不经常使用(LFU)缓存的数据结构
题目描述设计并实现最不经常使用(LFU)缓存的数据结构。它应该支持以下操作:get 和 put。get(key) - 如果键存在于缓存中,则获取键的值(总是正数),否则返回 -1。put(key, value) - 如果键不存在,请设置或插入值。当缓存达到其容量时,它应该在插入新项目之前,使最不经常使用的项目无效。在此问题中,当存在平局(即两个或更多个键具有相同使用频率)时,最近最少使用的键...原创 2020-04-05 15:23:53 · 449 阅读 · 0 评论 -
[Daily Practice] -接雨水问题
问题描述给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。该题目来源于leetcode,点击进入上面是由数组 [2, 0, 1, 1, 0, 3, 2, 1, 0, 0, 4, 1, 2, 0, 2,] 表示的高度图,在这种情况下,可以接 18 个单位的雨水(蓝色部分表示雨水)。解题思路如上图,我们当做是用砖砌的水槽,首先我们把它以最高的...原创 2020-04-04 14:11:22 · 393 阅读 · 0 评论 -
[Daily Practice] -字符串转数字(仅使用Sting.charAt(index))
问题描述请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存...原创 2020-04-03 21:35:11 · 255 阅读 · 0 评论 -
[Daily Practice] -生命游戏
问题描述给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;如果活细胞周围八个位...原创 2020-04-03 00:13:13 · 314 阅读 · 0 评论 -
[Daily Practice] -有效括号的嵌套深度
问题描述给你一个「有效括号字符串」 seq,请你将其分成两个不相交的有效括号字符串,A 和 B,并使这两个字符串的深度最小。有效括号字符串定义:对于每个左括号,都能找到与之对应的右括号,反之亦然。不相交:每个 seq[i] 只能分给 A 和 B 二者中的一个,不能既属于 A 也属于 B 。A 或 B 中的元素在原字符串中可以不连续。A.length + B.length = seq.l...原创 2020-04-02 22:32:54 · 149 阅读 · 0 评论 -
[Daily Practice] -数组排序
1.非比较排序先找到数组中的最大值和最小值,确定最大值和最小值的差值为n,新建一个长度为n+1的数组,新建的这个数组用来存放每个值出现的次数,最后按顺序添加回原来的数组。例: [3,7,4,1,3]最大值为7,最小值为1新建数组长度为7-1=6的数组[0,0,0,0,0,0,0]循环数组后可得:[1,0,2,1,0,0,1]对原数组重新赋值时,按顺序添加,为0时不添加,即:1,3,3...原创 2020-03-31 23:22:22 · 257 阅读 · 0 评论 -
[Daily Practice] -约瑟夫环问题
问题描述0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。该题目来源于leetcode,点击进入读题例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。解法一比较直观的解法public int lastRemaining(in...原创 2020-03-30 23:59:50 · 784 阅读 · 0 评论 -
[Daily Practice] -链表两数相加
题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。该题目来源于leetcode,点击进入链表如下:public static class ListNode { ...原创 2020-03-29 16:35:51 · 183 阅读 · 0 评论 -
[Daily Practice] -求解两数之和
题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。该题目来源于leetcode,点击进入读题示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 ...原创 2020-03-29 15:34:34 · 221 阅读 · 0 评论 -
[Daily Practice] -宽度优先搜索算法(BFS)
题目描述你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域是是哪一个吗?请返回该海洋区域到离它最近的陆地区域的距离。我们这里说的距离是『曼哈顿距离』( Manhattan Distance):(x0, y0) 和 (x1, y1) 这两个区域之间的距离是 |...原创 2020-03-29 14:51:31 · 264 阅读 · 0 评论 -
[Daily Practice] -字典树(Trie)
题目描述给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。例如,如果这个列表是 [“time”, “me”, “bell”],我们就可以将其表示为 S = “time#bell#” 和 indexes = [0, 2, 5]。对于每一个索引,我们可以通过从字符串 S 中索引的位置开始读取字符串,直到 “#” 结束,来恢复我们之前的单词列表。那么成功对给定单词列表...原创 2020-03-28 22:46:23 · 209 阅读 · 0 评论