SCNU习题 总结与复习

1. P1:构建最大二叉树 【分治】 重点

在这里插入图片描述

在这里插入图片描述
构树函数需要注意的点;
在这里插入图片描述
前序遍历需要注意,本题的输出有点特点。若一个结点无左子,无右子就不再下去遍历; 其他情况都要下去遍历;

2. P2 寻找多数【分治】

没啥,注意unorder_map的使用
unordered_map 是 C++ STL 提供的一种哈希表实现,允许以常数时间复杂度进行查找、插入和删除操作。以下是 unordered_map 的几个常用方法及其简要说明:

ump常用方法

  1. 构造函数

    • unordered_map<Key, T> ump;
      创建一个空的 unordered_map
  2. 插入元素

    • ump.insert({key, value});
      插入一个键值对。如果键已存在,则插入失败。
    • ump[key] = value;
      插入或更新键 key 的值为 value。如果键存在,则更新;如果不存在,则插入。
  3. 访问元素

    • ump.at(key);
      返回键 key 对应的值。如果键不存在,会抛出 std::out_of_range 异常。
    • ump[key];
      返回键 key 对应的值,如果键不存在,会插入一个默认值。
  4. 查找元素

    • ump.find(key);
      返回一个迭代器,指向键 key位置,如果键不存在,则返回 ump.end()
  5. 删除元素 【重要】

    • ump.erase(key);
      删除键 key 及其对应的值,返回删除的元素数量(0或1)。
    • ump.erase(iterator);
      删除指定迭代器指向的元素。
  6. 检查元素是否存在 【重要】

    • ump.count(key);
      返回键 key 的出现次数(0或1),可用于检查元素是否存在。
  7. 大小和容量

    • ump.size();
      返回 unordered_map 中元素的数量。
    • ump.empty();
      检查 unordered_map 是否为空。
  8. 遍历元素 【重要】

    • 使用范围 for 循环:
      for (const auto& pair : ump) {
          cout << pair.first << ": " << pair.second << endl;
      }
      
  9. 清空元素

    • ump.clear();
      删除 unordered_map 中的所有元素。
  10. 自定义哈希和比较函数

    • 可以在创建时指定自定义哈希函数和比较函数:
      unordered_map<Key, T, HashFunc, EqualFunc> ump;
      

总结

unordered_map 提供了高效的键值对存储和查找功能,常用于需要快速访问和修改元素的场景。了解这些常用方法可以帮助你高效地使用 unordered_map 进行数据管理。

3.P3 找最大连续子序和 【贪心】

在这里插入图片描述

在这里插入图片描述
和为负数就丢弃,和为正数继续枚举,记录最大值;
INT_MIN 在<limits.h>里;

4 & 5.找k个最小数/找k个最大数

在这里插入图片描述
虽然可以更优化,但为了应付考试方便,直接用sort吧[/doge]
最后sort有个用法:

  • sort(iter1,iter2) 本身是从小排序到大
  • sort(iter1,iter2,great< int > () ) 加入仿函数,从大排序到小

6.换硬币 【动态规划】

在这里插入图片描述
dp[i] : 组成i需要的最少硬币数量
dp[i] = min(dp[i] , dp[i-7] , dp[i-5] , dp[i-2]) 前提i>=7,i>=5,i>=2分别
在这里插入图片描述
注意dp[0]不能初始化为dp[0] = 0;虽然dp[0]我们可以认为无需硬币就可以,但也可以认为0无法用硬币去表示;本题就是必须用到后者的意义;

7 & 8.走网格 & 走楼梯【动态规划】

在这里插入图片描述
dp[i][j]:走到(i,j)最少有多少种方法;
每次值都可以从两个地方来源;

if(j>1) dp[i][j] += dp[i][j-1]; //Right
if(i>1) dp[i][j] += dp[i-1][j]; //Dow

在这里插入图片描述

在这里插入图片描述
一个道理,一个二维一个一维
在这里插入图片描述

9.背包问题 【动态规划】 重点

在这里插入图片描述
在这里插入图片描述
拿东西的时候别忘记了加上价值哈(+V[i]);

10.最长回文子串 【动态规划】

在这里插入图片描述
1.区间DP,记住s.substr(startidx,len)的用法,一个是开始下标,第二个是长度;
2.len = r-l +1 ; 又r<n,故l<n-len+1;
在这里插入图片描述

11. 最大连续子数组和 【动态规划】

和第2题一样;

12.分发饼干 【贪心】

在这里插入图片描述
在这里插入图片描述
很简单,将孩子从小到大排序,饼干也从小到大排序,尽可能贪心的满足最小要求去枚举;(可以通过数学证明确实如此)

13.反转69

在这里插入图片描述
没啥说的,尽可能从前面开始将6反为9

14.盛最多的水 【贪心】

在这里插入图片描述
在这里插入图片描述

15.括号生成 【回溯】 重点

在这里插入图片描述
在这里插入图片描述

16. K组合问题【回溯】

在这里插入图片描述
做烂了

17.求子集异或和 【回溯】

在这里插入图片描述
在这里插入图片描述
每次枚举都是不重复的,一定是一个子集,那么每次枚举后都需要进行计算异或和就行;

18.分割回文串 【回溯】 重点

在这里插入图片描述
在这里插入图片描述
枚举分割的位置i,若是回文串则加入;

19. 目标和 【回溯】

在这里插入图片描述
在这里插入图片描述
枚举每个数的两种选择就行了

20.电话号码组合 【回溯】

在这里插入图片描述

和19题一样的;
在这里插入图片描述

21.优美的数列【回溯-排列】

在这里插入图片描述
在这里插入图片描述
枚举全排列就行;在此基础上加上满足两个条件就行;

22.K组合 【回溯】

在这里插入图片描述
No need to say.

23.大礼包 【分支界限法】

在这里插入图片描述
1.过滤出有用礼包
2.枚举直接方式,枚举礼包,看最小;
在这里插入图片描述
在这里插入图片描述

24.分成K个相等子集 【回溯】 重要

在这里插入图片描述
注意隐含条件:
在这里插入图片描述
注意隐含条件;其次枚举的是每个数,然后选择放哪个篮子里,如果满了就要看下个篮子;

25.跳跃游戏 【贪心】

在这里插入图片描述
在这里插入图片描述
看代码了;就遍历i能够跳到的边界,并且在迭代的过程中,更新最大边界;

26.整数拆分 【动态规划】 重要


在这里插入图片描述
每个数,可以拆出一个数j作为拆分值,那么另外的i-j你可以选择继续拆,也可以选择不再继续拆; 对应的就是j x dp[i-j] , j x (i-j) 取max

27.打家劫舍 【动态规划】

在这里插入图片描述
在这里插入图片描述
nothing need to be toldn~

28.戳气球 【动态规划】 重点

在这里插入图片描述

为什么要倒叙遍历?因为大问题的解组成rec[i][k]实际上是由后部分组成的
在这里插入图片描述

如果我们从前往后遍历,那么其中的值是没有更新的;
在这里插入图片描述

29.分发糖果【贪心】

在这里插入图片描述
从左到右遍历一遍满足左规则;
从右到左遍历一遍满足右规则;
取并集;
在这里插入图片描述

30.三数之和 【双指针】 重点

在这里插入图片描述
num_i + num_j + num_k =0 变成 num_i + num_j = -num_k;
再去枚举i,j;不过注意一点,为了保证重复,需要做一点处理;
在这里插入图片描述

31.反转括号 【栈】 重点

在这里插入图片描述
记住一点:为什么要用栈?因为栈可以保存上次处理的数据,方便我们处理上一个数据;
在这里插入图片描述

32.跳跃游戏2 【贪心】

在这里插入图片描述
开始的边界应该设置为0,跳跃也为0;

33.颜色分类

在这里插入图片描述
应付考试,直接sort

34.找假币

在这里插入图片描述
应付考试,直接用unordered_map 去找少的那个;

35.最少操作使数组递增

在这里插入图片描述
在这里插入图片描述
找差距diff,并递增diff+1;继续遍历;

36.组合求和

在这里插入图片描述
在这里插入图片描述
没啥说的,组合就完事了;

37.完全平方数

在这里插入图片描述
for a : 1->n dp[i] = min(dp[i],dp[i - a*a]);
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/912241.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录-栈和队列-用栈实现队列

问题描述 题目描述中有说不存在空栈的pop和peek&#xff0c;所以无需判断这个 解析 重点在于思路&#xff0c;代码白给。 要用栈实现队列&#xff0c;肯定是两个栈才可以。一个做入队操作&#xff0c;一个做出队操作。 首先入队简单&#xff0c;往栈里加就完事了。 出队复…

Scrapy框架:Python爬虫开发快速入门与初试

在众多编程语言中&#xff0c;Python以其简洁的语法和强大的库支持&#xff0c;成为了编写爬虫的首选语言。而在Python的爬虫库中&#xff0c;Scrapy框架无疑是其中的佼佼者。Scrapy是一个开源的、基于Python的爬虫框架&#xff0c;它提供了一套完整的工具和功能&#xff0c;使…

三菱QD77MS定位模块速度限制功能

“速度限制功能”是控制中的指令速度超过“速度限制值”的情况下&#xff0c;将指令速度限制在“速度限制值”的设置范围内的功能。 [1]速度限制功能与各控制的关系 速度限制功能”与各控制的关系如下所示。 [3]速度限制功能的设置方法 使用“速度限制功能”时&#xff0c;在如…

LeetCode【0002】两数相加

本文目录 1 中文题目2 求解思路2.1 基础解法&#xff1a; 递归解法2.2 最优解法&#xff1a;迭代法 3 题目总结 1 中文题目 给你两个非空的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照逆序的方式存储的&#xff0c;并且每个节点只能存储一位数字。请将两个数相…

鸿蒙进阶-属性动画

hello大家好啊&#xff0c;这里是鸿蒙开天组&#xff0c;今天我们来学习鸿蒙中的动画属性。 先来说说动画~ 属性值的变化&#xff0c;通常会引发 UI 的变化,结合动画可以让这个变化过程【更为流畅】&#xff0c;反之这个过程将在一瞬间完成&#xff0c;用户体验不好&#xff…

工业相机常用功能之白平衡及C++代码分享

目录 1、白平衡的概念解析 2、相机白平衡参数及操作 2.1 相机白平衡参数 2.2 自动白平衡操作 2.3 手动白平衡操作流程 3、C++ 代码从XML读取参数及设置相机参数 3.1 读取XML 3.2 C++代码,从XML读取参数 3.3 给相机设置参数 1、白平衡的概念解析 白平衡(White Balance)…

语音识别ic赋能烤箱,离线对话操控,引领智能厨房新体验

一、智能烤箱产品的行业背景 随着科技的飞速发展&#xff0c;智能家居已经成为现代家庭的新宠。智能烤箱作为智能家居的重要组成部分&#xff0c;正逐渐从高端市场走向普通家庭。消费者对于烤箱的需求不再仅仅局限于基本的烘焙功能&#xff0c;而是更加注重其智能化、便捷化和…

智能合约在供应链金融中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 智能合约在供应链金融中的应用 智能合约在供应链金融中的应用 智能合约在供应链金融中的应用 引言 智能合约概述 定义与原理 发展…

书生大模型实战营-玩转HF/魔搭社区闯关任务

通过Github Codespace下载InternLM模型并运行 本篇博客是记录《书生大模型实战营第四期-玩转HF/魔搭/魔乐》章节的闯关任务从HF上下载模型文件&#xff0c;对实战营感兴趣的小伙伴也可以扫码报名哦。 一、通过模版创建Codespace环境 访问codespace 点击Jupyter Notebook 模版…

多维视角下的知识管理:Spring Boot应用

2 开发技术 2.1 VUE框架 Vue.js&#xff08;读音 /vjuː/, 类似于 view&#xff09; 是一套构建用户界面的渐进式框架。 Vue 只关注视图层&#xff0c; 采用自底向上增量开发的设计。 Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。 2.2 Mysql数据库 …

【hdfs】【hbase】【大数据技术基础】实践二 HBase Java API编程

实践二 HBase Java API编程 为什么可以写命令还要编写程序&#xff1f;自动化批量处理&#xff1f; 尽管我们可以通过HBase的shell命令行工具进行数据操作&#xff0c;但在实际的生产环境中&#xff0c;为了提高效率和实现自动化处理&#xff0c;我们通常需要编写程序来与HBa…

【Pikachu靶场:XSS系列】xss之过滤,xss之htmlspecialchars,xss之herf输出,xss之js输出通关啦

一、xss之过滤 <svg onloadalert("过关啦")> 二、xss之htmlspecialchars javascript:alert(123) 原理&#xff1a;输入测试文本为herf的属性值和内容值&#xff0c;所以转换思路直接变为js代码OK了 三、xss之href输出 JavaScript:alert(假客套) 原理&#x…

【数据分享】1901-2023年我国省市县镇四级的逐年降水数据(免费获取/Shp/Excel格式)

之前我们分享过1901-2023年1km分辨率逐月降水栅格数据和Shp和Excel格式的省市县四级逐月降水数据&#xff0c;原始的逐月降水栅格数据来源于彭守璋学者在国家青藏高原科学数据中心平台上分享的数据&#xff01;基于逐月数据我们采用求年累计值的方法得到逐年降水栅格数据&#…

Istio Gateway发布服务

1. Istio Gateway发布服务 在集群中部署一个 tomcat 应用程序。然后将部署一个 Gateway 资源和一个与 Gateway 绑定的 VirtualService&#xff0c;以便在外部 IP 地址上公开该应用程序。 1.1 部署 Gateway 资源 vim ingressgateway.yaml --- apiVersion: networking.istio.…

暮雨直播 1.3.2 | 内置直播源,频道丰富,永久免费

暮雨直播是一款内置直播源的电视直播应用程序&#xff0c;提供丰富的频道内容&#xff0c;包括教学、首页、一线、博主、解说、动漫、堆堆等。该应用的内置直播源持续更新维护&#xff0c;确保用户可以稳定地观看各种电视频道。暮雨直播承诺永久免费&#xff0c;为用户提供了一…

大数据学习10之Hive高级

1.Hive高级 将大的文件按照某一列属性进行GROUP BY 就是分区&#xff0c;只是默认开窗存储&#xff1b; 分区是按行&#xff0c;如一百行数据&#xff0c;按十位上的数字分区&#xff0c;则有十个分区&#xff0c;每个分区里有十行&#xff1b; 分桶是根据某个字段哈希对桶数取…

Java基于SpringBoot+Vue框架的宠物寄养系统(V2.0),附源码,文档

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

定义宏将整数的二进制的奇数位和偶数位互换位置

假设这个数为n00000000 00000000 00000000 00001101——13 1.思路 1.1 奇数位&#xff1a;00000000 00000000 00000000 00000101 但是怎么获得奇数位呢&#xff1f;——进行按位与运算 不懂如何运算的可以看我主页的详解操作符-CSDN博客&#xff0c;该章详细写了各个操作符如何…

基于 RNN 的语言模型

基于 RNN 的语言模型 循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;是一类网络连接中包含环路的 神经网络的总称。 给定一个序列&#xff0c;RNN 的环路用于将历史状态叠加到当前状态上。沿着时间维度&#xff0c;历史状态被循环累积&#xff0c;并作为…

html的week控件 获取周(星期)的第一天(周一)和最后一天(周日)

html的week控件 获取周(星期)的第一天(周一)和最后一天(周日) <input type"week" id"week" class"my-css" value"ViewBag.DefaultWeek" /><script> function PageList() { var dateStrin…