自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 收藏
  • 关注

原创 leetcode121.买卖股票的最佳时机

因此思考,在每一天如何做出一个独立于后面阶段的决定呢(只与前面或者后面相关)很久不做DP了 (为什么总有种把题解写成日记但是日记又好像流水账的感觉)那么如何获取当前阶段的最优解呢?维护一个到前一阶段为止的最小买入价即可。在这道题中,每一天就可以看作一个阶段(最明显的分段点)很好想的是前者:我只要在当前阶段卖出股票就行啦。我是个荒谬的人,但是却被你的温暖拯救。(努力干正事,不写流水账)DP要先分节点和阶段。ok,O(n)成立!

2023-10-25 15:15:15 104

原创 Boyer-Moore 投票算法(摩尔投票算法)

做leetcode了解的,挺简单的算法,但是一下子也没有那么容易想到。

2023-10-24 16:43:05 107

原创 P1004 [NOIP2000 提高组] 方格取数

【题目】设有 N×N 的方格图 (N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 0。某人从图的左上角的 A 点出发,可以向下行走,也可以向右走,直到到达右下角的 B 点。然后就是转移方程,让我想想啊——有4种情况可以转移过来,只需要考虑当前两个节点是否重合即可避免重负相加的问题,nice~(不知道为什么做DP一直会觉得瞻前顾后的)然后看到了N<=9,暴力女王开始想要暴力解决了,再想想立刻pass(更恐怖的是我感觉这道题我肯定写过但是没有解题思路的印象了)

2023-08-18 14:26:17 118

原创 P1003 [NOIP2011 提高组] 铺地毯

【题目】为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。(因为后覆盖的地毯在上面,而题目正好要求最上面的地毯),如果有一个地毯满足条件(满足什么条件在下面讲解)就直接输出,并退出。一遍AC,一开始以为要想一些比较可爱的算法,但是一看是D1T1,就觉得暴力应该能过(什么奇奇怪怪的刻板印象),再一看,只有一个点要查看,遍历就行啦。

2023-08-18 11:20:44 113

原创 P1002 [NOIP2002 普及组] 过河卒

【题目】棋盘上 A 点有一个过河卒,需要走到目标 B 点。同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,A 点(0,0)、B 点(n,m),同样马的位置坐标是需要给出的。现在要求你计算出卒从 A 点能够到达 B 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。2. 哪怕只是20*20,也得考虑会不会爆int,ull!提交到最后快炸了,真的是太久没有写代码开始手生了。1. 考虑初始值(0,0)的合法性。

2023-08-18 10:58:04 91

原创 P1001 A+B Problem

namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中,也就解释了上面这句话的由来。对于头文件,可以简单的认为带.h 的头文件是旧标准的,而不带或者以c开头的是标准的。1. 发现自己忘记加using namespace std;2. C/C++中int类型是32位的,范围是-2147483648到2147483647。【题目】输入两个整数 a,b,输出它们的和(∣a∣,∣b∣≤。

2023-08-17 15:24:01 34

原创 Git 入门

git push --set-upstream origin 分支名 推送本地分支到远程地址。git push -- set-upstream origin 分支名 推送到自己的仓库。git branch 分支名 origin/分支名 获取远程分支到本地。git push git clone -b 分支名 仓库地址 clone获取分支。git checkout –b 分支名 新建一个代码分支。git merge 分支名 在当前分支,合并分支。

2022-09-13 23:35:32 92 1

原创 PS快捷键

ctrl+alt+shift+s 存为网页所用格式 比较小。ctrl+z 返回 ctrl+shift++z 前进一步。72-屏显-RGB(光) 8位。300-印刷-CMYK(油墨)alt+滑动鼠标 工作台变化。shift 等比例放大缩小。alt+dlt 填充前景色。ctrl+t 自由变换。alt 以特殊的点旋转。ctrl+k 常规设置。空格+移动 移动工作台。

2022-09-13 23:32:56 138

原创 产品经理基础(一)

需求评审:产品经理将当此需求所需要全部配合方聚集展开的需求讲解会,主要目的是表输出本次需求的目的、征求意见、确定参与人员与排期。产品是指能够提供给市场,被人们使用和消费,并能满足人们某种需求的任何东西,包括有形的产品,无形的产品,或他们的组合。就是用来解决问题的东西,它可能是任何形态的(实物、服务、项目),是产品经理解决问题所需要的媒介。需求收益:主要分为用户侧与产品侧,表示该需求的产出可以为产品或用户带来的收益。产品流程图:通过流程的方式展示产品整体或某项功能的使用方式,或人机交互过程。

2022-09-13 23:29:14 212

原创 scale-up & scale-out

Scale Out(Scale horizontally)横向扩展,向外扩展,架构的升级通常是以节点为单位,每个节点往往将包含容量、处理能力和I/O带宽。一个节点被添加到存储系统,系统中的三种资源将同时升级,即容量增长和性能扩展(即增加额外的控制器)是同时进行的。Scale Up(Scale vertically)纵向扩展,向上扩展,主要是利用现有的存储系统,通过不断增加存储容量来满足数据增长的需求。对于一般升级, 往往是scale-up,scale-out相较于其更加不易。这是一种架构的概念。

2022-09-08 17:13:36 399

翻译 Hadoop&MapReduce

Hadoop框架先将文件分成数据块并分布式地存储在集群的计算节点中,接着将负责计算任务的代码传送给各节点,让其能够并行地处理数据。基于MapReduce计算模型,它为大数据的分布式存储与处理提供了一个软件框架。当前的软件实现是指定一个“Map”(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的“Reduce”(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。概念“Map(映射)”和“Reduce(归约)”,及他们的主要思想,都是从函数式编程语言借鉴的,还有矢量编程语言借来的特性。

2022-09-05 19:59:50 67

原创 136. 只出现一次的数字

【题目描述】给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。【解答】排序+遍历

2022-07-05 14:53:22 37

原创 222. 完全二叉树的节点个数

【问题描述】给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。【解答】如果左子树深度等于右子树深度, 则左子树是满二叉树.........

2022-07-05 14:52:53 50

原创 80. 删除有序数组中的重复项 II

【题目描述】给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。【解答】是一种遍历方式,判断当前节点是否需要被覆盖...

2022-06-29 13:26:51 52

原创 73. 矩阵置零

【题目描述】给定一个 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。【解答】做法任意,我标记了化为0的行和列

2022-06-29 01:32:45 139

原创 63. 不同路径 II

【题目描述】一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。【解答】与62题异曲同工...

2022-06-29 01:26:57 36

原创 64. 最小路径和

【描述】给定一个包含非负整数的 网格 ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。【解答】与62异曲同工

2022-06-29 01:18:08 48

原创 62. 不同路径

【题目描述】一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?【解答】递推常见...

2022-06-29 01:10:59 90

原创 50. Pow(x, n)

【题目描述】实现 pow(x, n) ,即计算 的整数 次幂函数(即, )。【代码】小数版快速幂

2022-06-29 01:05:44 49

原创 58. 最后一个单词的长度

【题目描述】给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。【解答】从后往前扫描即可......

2022-06-29 01:03:56 47

原创 56. 合并区间

【题目】以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。【解题记录】这个算法老师上课讲过(复盘的时候才想起来)【看懂while循环就是重点】...

2022-06-29 00:58:51 42

原创 53. 最大子数组和

【题目描述】给你一个整数数组 ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。【解答】附上题解链接:(很喜欢这种精悍的代码)​​​​​​力扣https://leetcode.cn/problems/maximum-subarray/solution/zui-da-zi-xu-he-by-leetcode-solution/...

2022-06-29 00:48:03 1832

原创 49. 字母异位词分组

【题目描述】给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。【解答】典型的mapget到了emplace_back的美妙!...

2022-06-29 00:37:33 252

原创 46. 全排列

【题目描述】给定一个不含重复数字的数组 ,返回其所有可能的全排列 。你可以 按任意顺序 返回答案。【解答】(pascal后遗症,喜欢手工栈)

2022-06-28 16:19:56 39

原创 34. 在排序数组中查找元素的第一个和最后一个位置

【题目描述】给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。【代码】二分查找位置再遍历(其实遍历也可以二分)...

2022-06-28 15:34:03 59

原创 36. 有效的数独

【题目描述】请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。注意:一个有效的数独(部分已被填充)不一定是可解的。只需要根据以上规则,验证已经填入的数字是否有效即可。空白格用 '.' 表示。【解答】挨个判断条件(memset复健)...

2022-06-28 15:20:50 113

原创 22. 括号生成

【题目描述】数字 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。【解答】生成所有左括号和右括号的排列,检查是否合法(多一个剪枝,判断一下当前是否能加右括号)...

2022-06-28 15:03:21 105

原创 18. 四数之和

【题目描述】给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0 ...

2022-06-28 14:53:32 39

原创 17. 电话号码的字母组合

【题目】给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。【解答】回溯+递归(呜呜呜为什么想好久)map太香了(来自一个不喜欢用map的菜菜狗)......

2022-06-28 14:21:39 47

原创 15. 三数之和

【题目描述】给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。【解答】按元素枚举(保证每一次枚举的元素的下一个都比当前值大)(题解的结构写的很清晰了:链接:https://leetcode.cn/problems/3sum/solution/san-shu-zhi-he-by-leetcode-solution/)...

2022-06-28 14:00:49 87

原创 剑指 Offer II 020. 回文子字符串的个数

【题目描述】给定一个字符串 ,请计算这个字符串中有多少个回文子字符串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。【解答】1.第一种方式肯定是枚举啦,枚举不同区间的开头和结尾,然后看看是不是回文的2.嗅到了一种DP的味道:dp[i][j]判断一下i和j位置的一样吗?...

2022-06-28 01:16:25 41

原创 剑指 Offer 28. 对称的二叉树

【题目描述】请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。【解答】其实对称就是变相的判断一下回文数(真的当时就这么想的)简单的说就是:左右子节点的值要相等;左右子节点的子树要对称相等;(下面贴的是官方的解答,觉得比自己写的简洁)...

2022-06-28 00:53:21 114

原创 剑指 Offer 68 - II. 二叉树的最近公共祖先

【题目描述】给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”【解答】好久不碰树了(这对于计算机的宝宝是不是不正常哭泣)若root是p,q的最近公共祖先 ,则分成三种情况:1. p和q分别在root的左右子树中2. p,q同属一个左右子树,并且q=root3. p,q同属一个左右子树,并且p=root(所以可以递归算)..

2022-06-28 00:40:19 101

原创 1340. 跳跃游戏 V

题目描述给你一个整数数组 和一个整数 。每一步你可以从下标 跳到:除此以外,你从下标 跳到下标 需要满足: 且 ,其中下标 是所有 到 之间的数字(更正式的,)。你可以选择数组的任意下标开始跳跃。请你返回你 最多 可以访问多少个下标。请注意,任何时刻你都不能跳到数组的外面。解答感觉其实和前两个跳跃游戏有异曲同工之妙,都是在跳转中判断怎么跳,可不可以跳,跳多远。所以第一种尝试的方法就是顺序遍历+深搜,因为可以选择数组的任意下标开始跳跃,还需要枚举起点(虽然感觉其实最后是强连通的,瞎说的,因为

2022-06-10 02:59:41 388

原创 55. 跳跃游戏

题目描述给定一个非负整数数组 ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。解答1.最初是想用刚刚做的那个跳跃游戏(低阶动规版)同样的思路解决的,但是发现超时了2.终于有一点点理解人家为什么是贪心了,因为其实是可以一直确定当前能到达的最远点是哪里的,因为是完整的覆盖...

2022-06-08 23:24:40 367

原创 45. 跳跃游戏 II

题目描述给你一个非负整数数组 ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。解答最简单的思路:当前位置的最优的来源是前面所有能到达它的节点中步数最小的+1那么变递归为递推,站在初始节点,可以不断去更新它能到达的点的最小步数。BUG可能能到达的节点超过了范围,记得判断...

2022-06-08 23:13:23 342

原创 剑指 Offer 24. 反转链表

题目描述定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。解答遍历一遍链表,边遍历边保存/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: Li..

2022-06-04 20:45:38 30

原创 剑指 Offer 18. 删除链表的节点

题目描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。解答链表基础操作/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ..

2022-06-04 20:45:28 32

原创 剑指 Offer 40. 最小的k个数

题目描述输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。解答 class Solution {public: vector<int> getLeastNumbers(vector<int>& arr, int k) { sort(arr.begin(),arr.end()); auto i=arr.begin();..

2022-06-04 20:45:16 29

原创 剑指 Offer 42. 连续子数组的最大和

题目描述输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。解答从头开始用类似计算前缀和的方式累加,如果遇到和为负则变成0(意为从当前节点开始计算和)class Solution {public: int maxSubArray(vector<int>& nums) { int ans=-101,sum=0; for (auto i=nums.begin(); ..

2022-06-04 20:44:53 26

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除