- 博客(23)
- 收藏
- 关注
原创 学习笔记-鲁棒图
MVC的Model对应于经典的业务逻辑部分,而鲁棒图的实体对象更像“数据”的代名词——用实体对象建模的数据,既可以是持久化的也可以仅存在于内存中,并不像有的实践者理解的那样直接就等同于持久化对象。View:仅涵盖了“用户界面”元素的抽象, 鲁棒图的边界对象:全面涵盖了三种交互,即本系统和外部“人”的交互、本系统和外部“系统”的交互、本系统和外部“设备”的交互。相反,若实现某功能的鲁棒图中只含1个控制对象,则是明显地“设计不足”——这个控制对象的名字必然和功能的名字相同,这意味着没有对职责进行真正的切分。
2022-12-30 09:33:25
1423
原创 前端知识点总结01
只在React函数中调用Hook只在最顶层使用Hook,目的是保证Hook在每一次渲染中都能按照相同的顺序被调用。函数记录日志、节流、缓存。windows 窗口消息拦截键盘事件拦截(木马和外挂)流量识别分析。
2022-12-17 10:27:30
298
转载 力扣 309. 最佳买卖股票时机含冷冻期
【题目】 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。 【思路与算法】 【代码】 class Solution { public: int maxProfit(vector<int>& prices) { i
2020-08-26 09:54:13
311
原创 LeetCode 802.找到最终的安全状态
【题目】 传送门 【思路】 就是拓扑排序的简化版,一般思路是先找到所有出度为0的节点,再找出能够到达这些节点的节点。 【代码】 class Solution { public: vector<int> eventualSafeNodes(vector<vector<int>>& graph) { vector<int> res;//存放结果 int m=graph.size(); vec
2020-08-24 20:12:40
312
原创 力扣 N叉树的前序遍历
【题目】 传送门 【代码】 /* // Definition for a Node. class Node { public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _val, vector<Node*> _children) { val = _val; c
2020-08-13 14:27:37
240
原创 力扣 79.单词搜索+212.单词搜索II
回溯法单词搜索单词搜索|| 单词搜索 【题目】 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 【思路】 【代码】 class Solution { public: int dir[4][4]={{-1,0},{1,0},{0,-1},{0,1}};//位置坐标 bool dfs(int x,int y,int index,vecto
2020-08-13 11:41:59
485
原创 力扣 297. 二叉树的序列化与反序列化
【题目】 传送门 【思路】 序列化: 二叉树的序列化本质上是对其值进行编码,更重要的是对其结构进行编码。可以遍历树来完成上述任务。 我们可以先序遍历这颗二叉树,遇到空子树的时候序列化成 None,否则继续递归序列化。 反序列化: 首先我们需要根据 , 把原先的序列分割开来得到先序遍历的元素列表,然后从左向右遍历这个序列: 如果当前的元素为 None,则当前为空树 否则先解析这棵树的左子树,再解析它的右子树 https://leetcode-cn.com/problems/serialize-and
2020-08-05 09:10:17
336
转载 二叉树的前、中、后序遍历(非递归)
【二叉树的前序遍历】 传送门 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<int>
2020-08-01 11:22:29
141
原创 Nim游戏
【题目】 你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。 示例: 输入: 4 输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还是 3 块石头,最后一块石头总是会被你的朋友拿走。 【官方题解】 如果石头的个数是4n,那么先手者必输:后手者只要保证每回合能
2020-07-29 20:51:06
705
原创 力扣:存在重复元素+存在重复元素||
存在重复元素 【题目】 给定一个整数数组,判断是否存在重复元素。 如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。 示例 1: 输入: [1,2,3,1] 输出: true 示例 2: 输入: [1,2,3,4] 输出: false 示例 3: 输入: [1,1,1,3,3,4,3,2,4,2] 输出: true 【代码】 class Solution { public: bool containsDuplicate(vector<in
2020-07-26 11:03:58
279
原创 力扣 383. 赎金信
【题目】 给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。 (题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。) 注意: 你可以假设两个字符串均只含有小写字母。 canConstruct(“a”, “b”) -> false canConstru
2020-07-22 09:02:19
319
原创 信息学奥赛一本通:货币系统
题目: 给你一个n种面值的货币系统,求组成面值为m的货币有多少种方案。 【输入】 第一行为n和m。 【输出】 一行,方案数。 【输入样例】 3 10 //3种面值组成面值为10的方案 1 //面值1 2 //面值2 5 //面值5 【输出样例】 10 //有10种方案 思路: 动态规划,数组f记录方案数,tem记录货币价值 动态转移方程:f[j] = f[j] + f[j - tem[i]] #include<
2020-07-19 15:00:42
720
原创 力扣 相交链表
编写一个程序,找到两个单链表相交的起始节点。 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。 解题思路: (一下思路来自力扣精选的一个大佬) 根据题目意思 如果两个链表相交,那么相交点之后的长度是相同的 我们需要做的事情是,让两个链表从同距离末尾同等距离的位置开始遍历。这个位置只能是较短链表的头结点位置。 为此,我们必须消除两个链表的长度差 指针 pA 指向 A 链表
2020-07-19 10:50:40
321
原创 力扣 仅含 1 的子串数
** 题目: 给你一个二进制字符串 s(仅由 ‘0’ 和 ‘1’ 组成的字符串)。 返回所有字符都为 1 的子字符串的数目。 由于答案可能很大,请你将它对 10^9 + 7 取模后返回。 示例 1: 输入:s = “0110111” 输出:9 解释:共有 9 个子字符串仅由 ‘1’ 组成 “1” -> 5 次 “11” -> 3 次 “111” -> 1 次 示例 2: 输入:s = “101” 输出:2 解释:子字符串 “1” 在 s 中共出现 2 次 示例 3: 输入:s = “111
2020-07-13 15:22:40
328
原创 信息学奥赛 1274:【例9.18】合并石子
【题目描述】 在一个操场上一排地摆放着N堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。计算出将N堆石子合并成一堆的最小得分。 【输入】 第一行为一个正整数N (2≤N≤100); 以下N行,每行一个正整数,小于10000,分别表示第i堆石子的个数(1≤i≤N)。 【输出】 一个正整数,即最小得分。 【输入样例】 7 13 7 8 16 21 4 18 【输出样例】 239 解题思路:动态规划 代码如下: #include<ios
2020-07-12 10:20:26
1058
翻译 数的划分
【题目描述】 *将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。 例如:n=7,k=3,下面三种分法被认为是相同的。 {1,1,5};{1,5,1};{5,1,1}; 问有多少种不同的分法。 输出一个整数,即不同的分法。 【输入】 两个整数n,k(6<n≤200,2≤k≤6),中间用单个空格隔开。 【输出】一个整数,即不同的分法。 【输入样例】 7 3 【输出样例】 4 【提示】 四种分法为:{1,1,5};{1,2,4};{1,3,3};{2,2,3}。 代码部分: #includ
2020-07-10 13:39:47
477
原创 力扣:合并两个有序数组
合并两个有序数组 题目: 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3 输出: [1,2,2,3,5,6] 方法一
2020-07-10 11:00:30
326
原创 信息学奥赛一本通 1282:最大子矩阵
【题目描述】 已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1 × 1)子矩阵。 比如,如下4 × 4的矩阵 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 的最大子矩阵是 9 2 -4 1 -1 8 这个子矩阵的大小是15。 【输入】 输入是一个N×N 的矩阵。输入的第一行给出N(0<N≤100)。再后面的若干行中,依次(首先从左到右给出第一行的N个整数,再从左到右给出第二行的N个整数……)给出矩阵中的N2个整
2020-07-08 09:33:41
1463
1
原创 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
力扣: 实现 strStr() 函数。 题目: 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 输入输出: 示例 1: 输入: haystack = “hello”, needle = “ll” 输出: 2 示例 2: 输入: haystack = “aaaaa”, needle = “bba” 输出: -1 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是
2020-07-05 09:11:05
4266
1
原创 P1308 统计单词数
题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1 ),如果给定单词仅是文章中某一单...
2020-05-08 11:19:22
288
原创 洛谷P1598 垂直柱状图
题目描述 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过100个字符),然后用柱状图输出每个字符在输入文件中出现的次数。严格地按照输出样例来安排你的输出格式。 输入格式 四行字符,由大写字母组成,每行不超过100个字符 输出格式 由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的。在任何一行末尾不要打印不需要的多余空格。不要打印任何空行。 说明/提示 每行输...
2020-05-07 20:12:41
244
原创 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是: 00000 00001 00010 00011 00100 请按从小到大的顺序输出这32种01串。
问题描述 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是: 00000 00001 00010 00011 00100 请按从小到大的顺序输出这32种01串。 输入格式 本试题没有输入。 输出格式 输出32行,按从小到大的顺序每行一个长度为5的01串。 样例输出 00000 00001 00010 00011 思路:很基础的一题,就是先算出二的五次方,然后分别打...
2020-05-06 20:13:45
3654
3
原创 蓝桥杯 试题 基础练习 字母图形
基础题:利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。 输入格式 输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。 输出格式 输出n行,每个m个字符,为你的图形。 样例输入 5 7 样例输出 ABCDEFG BABCDEF...
2020-05-06 19:15:37
193
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅