![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
小熊奶黄包
这个作者很懒,什么都没留下…
展开
-
Leetcode学习笔记(十六)飞机上座位分配概率(疯子上飞机)
转载自:文西链接:https://blog.csdn.net/hopeztm/article/details/7922619#comments题目的描述是:有100个人上飞机,本应该按照各自的座位1-100号坐下,但其中有一个是疯子疯子的行为是:随机选择一个座位坐下。而正常人的行为是: 尽量做自己的座位,如果自己的座位被占了,就随机选一个座位。问题是:最后一个人坐在...转载 2020-04-07 15:53:38 · 619 阅读 · 0 评论 -
Leetcode学习笔记(十五)有效的括号字符串
题目:给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则: 任何左括号 ( 必须有相应的右括号 )。 任何右括号 ) 必须有相应的左括号 ( 。 左括号 ( 必须在对应的右括号之前 )。 * 可以被视为单个右括号 ) ,或单个左括号 ( ,或一个空字符串。 一个空字符串也被视为有效字符串...原创 2020-04-03 17:01:50 · 252 阅读 · 1 评论 -
Leetcode学习笔记(十三)打家劫舍三部曲
打家劫舍第一集:题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (...原创 2020-03-25 10:22:33 · 101 阅读 · 0 评论 -
Leetcode学习笔记(十二)按摩师
题目:一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。示例:输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。输入: [2,7,9,3,1]输出: 12...原创 2020-03-24 10:45:11 · 125 阅读 · 0 评论 -
Leetcode学习笔记(十一)合并二叉树
题目:给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。思路:递归代码:/** * Definition for a binary tree node. * struct T...原创 2020-03-23 16:04:45 · 116 阅读 · 0 评论 -
Leetcode学习笔记(十)最小绝对差
题目:给你个整数数组arr,其中每个元素都 不相同。请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。示例:输入:arr = [4,2,1,3]输出:[[1,2],[2,3],[3,4]]输入:arr = [3,8,-10,23,19,-4,-14,27]输出:[[-14,-10],[19,23],[23,27]思路:先排序找出绝对差最小值,再遍历一遍取...原创 2020-03-22 14:53:51 · 205 阅读 · 0 评论 -
Leetcode学习笔记(九)难伺候的珂珂
题目:珂珂喜欢吃香蕉。这里有N堆香蕉,第 i 堆中有piles[i]根香蕉。警卫已经离开了,将在H小时后回来。珂珂可以决定她吃香蕉的速度K(单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在 H 小时...原创 2020-03-18 13:52:45 · 198 阅读 · 0 评论 -
Leetcode学习笔记(八)在D天内送达快递的能力(二分法)
题目:传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i个包裹的重量为weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。示例:输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5输出:15解释:船舶最...原创 2020-03-18 09:39:35 · 273 阅读 · 0 评论 -
Leetcode学习笔记(六)URL化
题目:URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)示例1:输入:"Mr John Smith ", 13 输出:"Mr%20John%20Smith"示例2: 输入:" ", 5 输...原创 2020-03-15 11:24:53 · 97 阅读 · 0 评论 -
Leetcode学习笔记(七)将数组分成相等的三部分
题目:给你一个整数数组A,只有可以将其划分为三个和相等的非空部分时才返回true,否则返回 false。形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + ... + A[i] == A[i+1] + A[i+2] + ... + A[j-1] == A[j] + A[j-1] + ... + A[A.length - 1]) 就可以将数组三等分。例子...原创 2020-03-11 21:50:21 · 131 阅读 · 0 评论 -
Leetcode学习笔记(五)化栈为队
题目:实现一个MyQueue类,该类用两个栈来实现一个队列。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false思路:可以用两个栈来模拟,入队时直接往第一个栈p...原创 2020-03-10 22:50:19 · 83 阅读 · 0 评论 -
Leetcode学习笔记(四)从头到尾打印链表
题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。很显然这个题可以用栈来做我们尝试用数组来模拟,数组的左边和又变可以一起交换int* reversePrint(struct ListNode* head, int* returnSize){ int total = 0; struct ListNode* p = head; int ...原创 2020-03-02 22:14:10 · 205 阅读 · 0 评论 -
Leetcode学习笔记(三)树的最大深度
本章从两方面总结:二叉树的最大深度和N叉树的最大深度一.二叉树的最大深度题目描述解法一:递归class Solution {public: int maxDepth(TreeNode* root) { if( root == NULL) return 0; int left_depth = maxDepth(roo...原创 2020-03-02 20:59:14 · 227 阅读 · 0 评论 -
Leetcode学习笔记(一)可怜的小猪458
题目:有 1000 只水桶,其中有且只有一桶装的含有毒药,其余装的都是水。它们从外观看起来都一样。如果小猪喝了毒药,它会在 15 分钟内死去。问题来了,如果需要你在一小时内,弄清楚哪只水桶含有毒药,你最少需要多少只猪?回答这个问题,并为下列的进阶问题编写一个通用算法。进阶:假设有 n 只水桶,猪饮水中毒后会在 m 分钟内死亡,你需要多少猪(x)就能在 p 分钟内找出 “有毒” 水桶?这 ...原创 2020-02-15 08:13:26 · 177 阅读 · 0 评论 -
图解迷宫算法(广度优先遍历)
给定一个迷宫,如下所示:规则:从左上角的黄色起点走到右下角的黄色出口,深灰色数字1代表墙,白色0代表可走道路。人眼可能直接看出路线,但是如何让机器去走出迷宫呢?首先我们观察一个简单的模型:将上述思想应用到我们的迷宫中来接下来就可以根据出口往回推导,可以找出路径,13->12,12->11,11->10…3->2,2->1,1->0,因为每一个...原创 2020-02-06 17:46:15 · 1190 阅读 · 0 评论