算法
论眉毛你是比不过我的
一只成长中的小白
展开
-
【算法修炼道路】有序矩阵中第 K 小的元素
378. 有序矩阵中第 K 小的元素给你一个n x n矩阵matrix,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素,而不是第k个不同的元素。示例 1:输入:matrix = [[1,5,9],[10,11,13],[12,13,15]], k = 8输出:13解释:矩阵中的元素为 [1,5,9,10,11,12,13,13,15],第 8 小元素是 13示例 2:输入:matrix = [[-5]]...原创 2021-02-27 01:04:09 · 248 阅读 · 0 评论 -
【算法修炼道路】最小k个数(topk)
设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。示例:输入: arr = [1,3,5,7,2,4,6,8], k = 4输出: [1,2,3,4]提示:0 <= len(arr) <= 1000000 <= k <= min(100000, len(arr))来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/smallest-k-lcci著作权归领扣网络所有。商业转载请联系官方授权,非原创 2021-02-25 23:26:37 · 234 阅读 · 0 评论 -
【算法修炼道路】并查集(3)-
200. 岛屿数量给你一个由'1'(陆地)和'0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1示例 2...原创 2021-02-24 01:41:52 · 252 阅读 · 0 评论 -
【算法修炼道路】并查集(2)-冗余连接
684. 冗余连接在本问题中, 树指的是一个连通且无环的无向图。输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, ..., N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v],满足u < v,表示连接顶点u和v的无向图的边。返回一条可以删去的边,使得结果图是一个有着N个节点的树。如果有多个答案,则返回二维数组中最后出现的边。答案边[u, v]应满...原创 2021-02-24 00:14:33 · 195 阅读 · 0 评论 -
【算法修炼道路】并查集(1)- 省份数量
有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。示例 1:输入:isC.原创 2021-02-23 23:40:57 · 137 阅读 · 0 评论 -
【算法修炼道路】链表的中间节点
给定一个头结点为 head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.nex..原创 2021-02-21 15:04:02 · 228 阅读 · 0 评论 -
【算法修炼道路】有环链表逆序
现有一个链表(可能有环)现在要把它逆序输出出来,可能存在链表循环,这个是要注意的地方以下代码模拟一个循环链表的逆序操作。思路是,还是按照单链表的逆序思路来进行,只不过每一次循环,都需要判断,未逆序节点是否指向已逆序的节点,如果是,break,如果不是,则继续。#include <iostream>using namespace std;struct Node{ int value; Node* next;};int main(void){ N原创 2021-02-20 23:24:19 · 126 阅读 · 0 评论 -
【算法修炼道路】计算24点
题目描述计算24点是一种扑克牌益智游戏,随机抽出4张扑克牌,通过加(+),减(-),乘(*),除(/)四种运算法则计算得到整数24,本问题中,扑克牌通过如下字符或者字符串表示,其中,小写joker表示小王,大写JOKER表示大王:345678910JQKA2jokerJOKER本程序要求实现:输入4张牌,输出一个算式,算式的结果为24点。详细说明:1.运算只考虑加减乘除运算,没有阶乘等特殊运算符号,友情提醒,整数除...原创 2021-02-16 17:45:05 · 681 阅读 · 0 评论 -
【算法修炼道路】任务调度器
621. 任务调度器给你一个用字符数组tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有任务所需要的 最短时间 。示例 1:输入:tasks = ["A","A".原创 2021-02-03 01:37:28 · 185 阅读 · 0 评论 -
【算法修炼道路】连续整数求和
829. 连续整数求和给定一个正整数 N,试求有多少组连续正整数满足所有数字之和为 N?示例 1:输入: 5输出: 2解释: 5 = 5 = 2 + 3,共有两组连续整数([5],[2,3])求和后为 5。示例 2:输入: 9输出: 3解释: 9 = 9 = 4 + 5 = 2 + 3 + 4示例 3:输入: 15输出: 4解释: 15 = 15 = 8 + 7 = 4 + 5 + 6 = 1 + 2 + 3 + 4 + 5说明:1 <= N <= 10 .原创 2021-02-01 00:24:50 · 1229 阅读 · 0 评论 -
【算法修炼道路】最大矩形
85. 最大矩形给定一个仅包含0和1、大小为rows x cols的二维二进制矩阵,找出只包含1的最大矩形,并返回其面积。示例 1:输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]输出:6解释:最大矩形如上图所示。示例 2:输入:matrix = []输出:0示例 3:输入:matrix = ...原创 2020-12-29 00:58:09 · 403 阅读 · 0 评论 -
【算法修炼道路】水域大小
你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。示例:输入:[ [0,2,1,0], [0,1,0,1], [1,1,0,1], [0,1,0,1]]输出: [1,2,4]提示:0 < len(land) <= 10000 < len(land[i]) <=...原创 2020-12-23 00:32:26 · 245 阅读 · 0 评论 -
【算法修炼道路】使用最小花费爬楼梯
数组的每个索引作为一个阶梯,第i个阶梯对应着一个非负数的体力花费值cost[i](索引从0开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从cost[1]开始,然后走两步即可到阶梯顶,一共花费15。示例 2:输入: cost = [1, 100, ...原创 2020-12-21 01:19:54 · 236 阅读 · 0 评论 -
【算法修炼道路】翻转游戏
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/flip-game-ii题目:你和朋友玩一个叫做「翻转游戏」的游戏,游戏规则:给定一个只有+和-的字符串。你和朋友轮流将连续 的两个"++"反转成"--"。 当一方无法进行有效的翻转时便意味着游戏结束,则另一方获胜。请你写出一个函数来判定起始玩家是否存在必胜的方案。示例:输入: s = "++++"输出: true解析: 起始玩家可将中间的 "++" 翻转变为 "...原创 2020-11-20 00:59:47 · 310 阅读 · 0 评论 -
【算法修炼道路】石子游戏
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/stone-game题目:甲、乙两人用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子piles[i]。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。甲和乙轮流进行,甲先开始。 每回合,玩家甲从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设甲、乙二人都发挥出最佳水平,当甲赢得比赛时返回true...原创 2020-11-15 13:01:51 · 208 阅读 · 0 评论 -
LeetCode 剑指 Offer 10- II. 跳台阶问题
(原题来自LeetCode剑指Offer,因为是付费内容,所以此处对原题进行一些修改)这道题比较简单。题目:小明要爬楼梯,但是由于小明腿短,每次顶多只能跨2层,当然他也可以选择只跨一层。提问:当有n阶台阶的时候,小明有多少种走完台阶的方法?---------------------------------------------------------------------------------输入:n=3,输出:3输入:n=5,输出:8-----------------原创 2020-07-24 01:09:02 · 243 阅读 · 0 评论 -
LeetCode 刷题记录帖(322,零钱兑换)
题目:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。链接如下:https://leetcode-cn.com/problems/coin-change/示例1:输入:coins=[1, 2, 5], amount = 11输出:3解释: 11 = 5 + 1 + 1示例 2:输入:coins=2, amount = 3输入:-1思路1:首先排除贪..原创 2020-07-23 01:54:10 · 188 阅读 · 0 评论