随笔分类 - oj记录
没事刷刷oj,总是会对自己有帮助的
摘要:Q:给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1: 输入: 11110 11010 11000 00000 输出: 1 示例 2: 输入: 11000 1
阅读全文
摘要:Q:亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石
阅读全文
摘要:Q:给定一个字符串s,找到其中最长的回文子序列。可以假设s的最大长度为1000。 示例 1: 输入: "bbbab" 输出: 4 一个可能的最长回文子序列为 "bbbb"。 示例 2: 输入: "cbbd" 输出: 2 一个可能的最长回文子序列为 "bb"。 A: 引用自:《labuladong的算
阅读全文
摘要:Q:你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。 每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。 你知道存在楼层 F ,满足 0 not_broken) { right = mid 1 ans = Math.min(ans, broken + 1) }
阅读全文
摘要:Q:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 1。 示例 1: 输入: coins = [1, 2, 5], amount = 11 输出: 3 解释: 11 = 5 + 5 + 1
阅读全文
摘要:广度优先搜索(BFS) 问题的本质就是让你在一幅「图」中找到从起点start到终点target的最近距离,这个例子听起来很枯燥,但是 BFS 算法问题其实都是在干这个事儿。 把枯燥的本质搞清楚了,再去欣赏各种问题的包装才能胸有成竹嘛。 这个广义的描述可以有各种变体,比如走迷宫,有的格子是围墙不能走,
阅读全文
摘要:Q:给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。 update(i, val) 函数可以通过将下标为 i 的数值更新为 val,从而对数列进行修改。 示例: Given nums = [1, 3, 5] sumRange(0, 2)
阅读全文
摘要:Q:班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。 给定一个 N N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知
阅读全文
摘要:Q:给定一个整数 n,返回 n! 结果尾数中零的数量。 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零。 示例 2: 输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零. 说明: 你算法的时间复杂度应为 O(log n) 。 A:如果按照全部阶乘了再去算
阅读全文
摘要:引用:https://blog.csdn.net/qq_29996285/article/details/86674779?depth_1 utm_source=distribute.pc_relevant.none task&utm_source=distribute.pc_relevant.no
阅读全文
摘要:Q:给定一个字符串,找出最长的不具有重复字符的子串的长度。例如,“abcabcbb”不具有重复字符的最长子串是“abc”,长度为3。对于“bbbbb”,最长的不具有重复字符的子串是“b”,长度为1。 A:把所有出现的都存进一个map里,然后找当前位置字符是否出现过。没出现过,dp[i] = do[i
阅读全文
摘要:Q:Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. A:KMP算法 kmp算法的思想就是:在匹配
阅读全文
摘要:Q:给定n个实数x1,x2,...,xn,求这n个实数在实轴上相邻2个数之间的最大差值,要求设计线性的时间算法 A: 最简单的是直接用sort,然后一个一个计算gap,再找到最大,但sort函数本身是快速排序,默认时间为O(nlogn)。 有三种线性的时间复杂度的排序算法,桶排序、基数排序、计数排序
阅读全文
摘要:Q:给定一个包含红色、白色和蓝色,一共n个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排序。 此题中,我们使用整数0、1和2分别表示红色、白色和蓝色。 【示例】 输入:[2, 0, 2, 1, 1, 0] 输出:[0, 0, 1, 1, 2, 2] 【注意】 不
阅读全文
摘要:Q:你和你的朋友在玩下面的尼姆游戏:桌子上有一堆石头,每次你们轮流移走1到3块石头。谁把最后一块石头搬走谁就是胜利者。你将在第一个回合移走石头。你们俩都很聪明,在游戏中都有最佳的策略。写一个函数来确定你是否可以赢得游戏给定的石头堆的数量。例如,如果堆里有4块石头,那么你永远都赢不了游戏:无论你移走1
阅读全文
摘要:Q:给定一个包含0和1的二维二进制矩阵,找出只包含1的最大正方形并返回其面积。 Example: Input: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 Output: 4 A:引用:https://blog.csdn.net/fly_fly_zhang/art
阅读全文
摘要:Q:设计和实现最近最少使用(LRU)缓存的数据结构。它应该支持以下操作:get和set。 get(key)—如果键存在于缓存中,则获取键的值(总是正的),否则返回 1。 put(key, value)——如果键不存在,则设置或插入该值。当缓存达到其容量时,它应该在插入新项之前使最近最少使用的项无效。
阅读全文
摘要:Q:有 N 个网络节点,标记为 1 到 N。 给定一个列表 times,表示信号经过有向边的传递时间。 times[i] = (u, v, w),其中 u 是源节点,v 是目标节点, w 是一个信号从源节点传递到目标节点的时间。 现在,我们向当前的节点 K 发送了一个信号。需要多久才能使所有节点都收
阅读全文
摘要:Q:给定两个单词word1和word2,请计算将word1转换为word2至少需要多少步操作。 你可以对一个单词执行以下3种操作: a)在单词中插入一个字符 b)删除单词中的一个字符 c)替换单词中的一个字符 A: 若 i == j,则意为着不需额外操作,则F(i,j) 显然 等于 F(i - 1,
阅读全文
摘要:Q:给定一个由非负整数填充的m x n的二维数组,现在要从二维数组的左上角走到右下角,请找出路径上的所有数字之和最小的路径。 注意:你每次只能向下或向右移动。 A:还是典型动态规划问题。 public static int minPathSum(int[][] grid) { int size1 =
阅读全文