移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——6.vector
1.杨辉三角
. - 力扣(LeetCode)

在「杨辉三角」中,每个数是它左上方和右上方的数的和。
class Solution {
public:vector<vector<int>> generate(int numRows) {vector<vector<int>> arr;int i = 0;int j = 0;for (i = 0; i < numRows; i++) {vector<int> brr;for (j = 0; j <= i; j++) {if (j == 0 || j == i)brr.push_back(1);elsebrr.push_back((arr[i - 1])[j - 1] + (arr[i - 1])[j]);}arr.push_back(brr);}return arr;}
};
2. 数组中出现次数超过一半的数字
数组中出现次数超过一半的数字_牛客题霸_牛客网

思路:
思想就是:如果两个数不相等,就消去这两个数,最坏情况下,每次消去一个众数和一个非众数,那么如果存在众数,最后留下的数肯定是众数。
具体做法:
- 初始化:候选人num = 0, 候选人的投票次数flag = 0
- 遍历数组,如果flag=0, 表示没有候选人,则选取当前数为候选人,++flag
- 否则,如果flag> 0, 表示有候选人,如果当前数=num,则++flag,否则--flag
- 直到数组遍历完毕,最后检查num是否为众数
class Solution {
public:int MoreThanHalfNum_Solution(vector<int>& numbers) {int flag=0;int num=0;for(auto s:numbers){if(flag==0){flag++;num=s;}else {if(s==num)flag++;elseflag--;}}return num;}
};
3.电话号码的数字组合
. - 力扣(LeetCode)

思路:
1.先建立vector<string> brr,用于存储不同数字 代表的 字符区间
2.若digits=“”,则直接返回{}
3.根据字符区间进行全排列
class Solution {
public:void init(string digits,vector<string>& arr,vector<string>& brr, int size, int begin, string& drr){if (size > begin){int flag = digits[begin] - '2';string crr = brr[flag];for (int i = 0; i < crr.size(); i++){ if (i != 0)drr.pop_back(); //重复添加字符时需要删除前一个字符char flag = crr[i];drr.push_back(flag);init(digits,arr,brr, size, begin + 1, drr);if (begin + 1 == size)arr.push_back(drr);if (i == crr.size()-1)drr.pop_back(); //走到末尾后,本次循环结束,也需要删除字符}}}vector<string> letterCombinations(string digits) {int size = digits.size();if(size==0){return {} ;}vector<string> arr;vector<string> brr;string crr;string drr;char flag = 'a';for (int i = 2; i <= 9; i++){crr.clear(); //记得清空字符if (i == 7 || i == 9){for (int j = 0; j < 4; j++){crr.push_back(flag);flag++;}}else{for (int j = 0; j < 3; j++){crr.push_back(flag);flag++;}}brr.push_back(crr);}init(digits,arr,brr,size, 0, drr);return arr;}
};
错题反思 !!!!!!(异或专题)
1.只出现一次的数字I
. - 力扣(LeetCode)

我的思路:
想过用sort,但时间复杂度就是O(nlogn)
官方思路:
使用^(异或)
1.任何数和 0 做异或运算,结果仍然是原来的数,即 a⊕0=a
2.任何数和其自身做异或运算,结果是 0,即 a⊕a=0
3.异或运算满足交换律和结合律,即 a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b答案很明显
只需遍历整个数组,将所有元素异或一遍即可
(除了所求数a以外,其他数都出现两次,所以最终结果是
0⊕0⊕⋯⊕0⊕a=a
class Solution {
public:int singleNumber(vector<int>& nums) {int ret = 0;for (auto e: nums) ret ^= e;return ret;}
};
2.只出现一次的数字II
. - 力扣(LeetCode)

民间大佬思路:
class Solution {
public:int singleNumber(vector<int>& nums) {int ans = 0;for (int i = 0; i < 32; i++) {int cnt1 = 0;for (int x: nums) {cnt1 += x >> i & 1; //使用>>得到所有元素的第i+1位二进制数的和}ans |= cnt1 % 3 << i; //使用<<将所得和%3的结果返回到第i+1位,并与ans|}return ans;}
};
3.只出现一次的数字III
. - 力扣(LeetCode)

官方思路:
假设数组 nums 中只出现一次的元素分别是 x 1 和 x 2
如果把 nums 中的所有元素全部异或起来,得到结果 x,那么一定有:x=x 1⊕x 2
其中 ⊕ 表示异或运算。这是因为 nums 中出现两次的元素都会因为异或运算的性质 a⊕b⊕b=a 抵消掉,那么最终的结果就只剩下 xx 显然不会等于 0,因为如果 x=0,那么说明
x 1=x 2
这样 x 1和 x 2就不是只出现一次的数字了。因此,我们可以使用位运算 x & -x 取出 x 的二进制表示中最低位那个 1,设其为第 l 位(其余位上都是0)那么 x 1 和 x 2中的某一个数的二进制表示的第 l 位为 0,另一个数的二进制表示的第 l 位为 1。
在这种情况下,x 1⊕x 2 的二进制表示的第 l 位才能为 1。(相同为0,相异为1)
这样一来,我们就可以把 nums 中的所有元素分成两类,其中一类包含所有二进制表示的第 l 位为 0 的数,另一类包含所有二进制表示的第 l 位为 1 的数。
可以发现:
对于任意一个在数组 nums 中出现两次的元素,该元素的两次出现会被包含在同一类中;
对于任意一个在数组 nums 中只出现了一次的元素,即 x 1和 x 2
它们会被包含在不同类中。因此,如果我们将每一类的元素全部异或起来,那么其中一类会得到 x 1
另一类会得到 x 2
这样我们就找出了这两个只出现一次的元素。
class Solution {
public:vector<int> singleNumber(vector<int>& nums) {int ret = 0;int num1=0;int num2=0;for (auto e: nums) ret ^= e;int flag = (ret == INT_MIN ? ret : ret & (-ret));
//(1)注意若ret为INT_MIN(10000000000000000000000000000000),则-ret超过正数最大边界,有溢出风险。这就是典型的运算过程反推前置条件
(2)ret为INT_MIN时,说明最高位不同,此时ret就是flag,无需修改for (auto e: nums){if(e&flag)num1^=e;elsenum2^=e;}return {num1,num2};}
};
相关文章:
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——6.vector
1.杨辉三角 . - 力扣(LeetCode) 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 class Solution { public:vector<vector<int>> generate(int numRows) {vector<vector<int>> arr;int i 0;int j 0;for (i…...
设计模式---简单工厂模式
简单工厂模式(Simple Factory Pattern) 是一种创建型设计模式,它定义了一个工厂类,通过这个工厂类可以创建不同类型的对象。简单工厂模式的主要目的是将对象的创建逻辑集中在一个地方,简化客户端的代码,使得…...
Vue | Vue 中的 refInForde 用法
refInFor:如果你在渲染函数中给多个元素都应用了相同的 ref 名,那么 $refs.myRef 会变成一个数组。 vue中的refInFor属性是Vue框架中用于在循环渲染的元素上设置引用的一种方式。 在Vue中,ref属性通常用于给元素或子组件注册引用信息&am…...
【原创】java+swing+mysql房屋租赁管理系统设计与实现
个人主页:程序员杨工 个人简介:从事软件开发多年,前后端均有涉猎,具有丰富的开发经验 博客内容:全栈开发,分享Java、Python、Php、小程序、前后端、数据库经验和实战 文末有本人名片,希望和大家…...
Django 中render、redirect 和 HttpResponse的区别
在 Python 的 Web 框架 Django 中,render, redirect 和 HttpResponse 是用于处理 HTTP 响应的不同函数,它们各自有不同的用途: HttpResponse: HttpResponse 是 Django 中最基本的响应对象,用于返回给客户端的 HTTP 响应…...
CRYPTO 2020
分类文章编号安全模型1-6公钥加密,功能加密,见证加密7-12后量子密码13-20密码分析21-31最佳论文32-34多方安全计算35-49真实应用50-55零知识证明56-62格和相关难题63-68泄露和外包加密69-74非交互式零知识证明,共识和延迟函数75-79构建80-85Security Models 1. Handling Ad…...
java 函数接口Consumer简介与示例【函数式编程】【Stream】
Java 8 中的 消费者接口Consumer 是一个函数接口,它可以接受一个泛型 类型参数,它属于java.util.function包。我们来看看Java函数接口库中的定义: FunctionalInterface public interface Consumer<T> {/*** Performs this operation o…...
黑神话:悟空-配置推荐
显卡推荐(按类别整理) 1. GTX 10系列、GTX 16系列: 如果希望体验光线追踪,建议根据预算升级到RTX 40系列显卡。对于1080p分辨率,至少需要RTX 4060才能流畅运行。 2. RTX 20系列: RTX 2060、RTX 2070&#…...
Android14 蓝牙设备类型修改
Android14 蓝牙设备类型设置修改设置 文章目录 Android14 蓝牙设备类型设置修改设置一、前言二、修改蓝牙设备类型1、蓝牙设备类型和对应的属性2、Debug设备设置和获取蓝牙设备类型3、系统源码中设置蓝牙设备类型4、Java代码中设置蓝牙prop属性可行吗? 三、其他1、A…...
vue3 语法糖<script setup>
在 Vue 3 中,<script setup>是一种新的语法糖,它极大地简化了组件的编写方式。 <script setup> 是在单文件组件 (SFC) 中使用组合式 API 的编译时语法糖。当同时使用 SFC 与组合式 API 时该语法是默认推荐。 基本概念 简洁的语法…...
微服务设计原则——高性能:异步与并发
文章目录 1.异步1.1 调用异步1.2 流程异步1.3 数据流异步1.4 小结 2.并发2.1 请求并发2.2 冗余请求2.3 小结 参考文献 1.异步 对于处理耗时长的任务,如果采用同步等待的方式,会严重降低系统的吞吐量,可以采用异步化进行解决。 异步…...
机器学习——决策树,朴素贝叶斯
一.决策树 决策树中的基尼系数(Gini Index)是用于衡量数据集中不纯度(或混杂度)的指标。基尼系数的取值范围在0到0.5之间,其中0表示数据完全纯(同一类别),0.5表示数据完全混杂。 基…...
C语言基础(十)
编译预处理命令: 预编译命令在C语言中用于在编译前进行一些特定的处理和控制,帮助程序员更灵活地管理源代码和控制编译过程。 C语言常用的预编译命令: #include:用于包含头文件,将另一个文件的内容插入到当前文件中…...
人像比对-人证比对-人脸身份证比对-人脸身份证实名认证-人脸三要素对比-实人认证
人脸身份证实名认证是一种基于生物识别技术的身份验证方式,主要依托证件OCR识别技术、活体检测、人脸比对等技术手段,对用户身份信息真实性进行核验,确保用户为真人且为本人。以下是关于人脸身份证实名认证的详细解析: 一、认证流…...
Android 上下滑隐藏显示状态栏
一、DisplayPolicy类中监听滑动事件,然后发送广播事件 Android12类路径: frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.javamSystemGestures new SystemGesturesPointerEventListener(mUiContext, mHandler,new SystemGest…...
USBCAN-II/II+使用方法以及qt操作介绍
一.USBCAN-II/II介绍 USBCAN-II/II 是一款常用的 USB-CAN 转换器,广泛应用于汽车电子、工业自动化等领域。以下是使用该设备的一般步骤和方法: 1. 硬件连接 连接设备:将 USBCAN-II/II 的 USB 接口连接到计算机的 USB 端口。 连接 CAN 网络…...
笔记-系统规划与管理师-案例题-2022年-IT服务部署实施
【说明】 某大型企业去年信息化投入大,完成了重点核心业务系统的建设。由于应急相应预案制定得不充分并且未开展演练,出现了系统性故障时,部分关键的应用系统不可用且在12小时内未能完成恢复业务,给企业带来了较大损失。 为加强该…...
Kubernetes 清理资源常用的 Kubernetes 清理命
清理特定状态的 Pod: 清理 Evicted 状态的 Pod: kubectl get pods --all-namespaces -o wide | grep Evicted | awk {print $1,$2} | xargs -L1 kubectl delete pod -n清理 Error 状态的 Pod: kubectl get pods --all-namespaces -o wide | g…...
【数据结构初阶】二叉树--基本概念
hello! 目录 一、树 1.1 树的概念和结构 1.2 树的相关术语 1.3 树的表示 1.4 树形结构实际应用场景 二、二叉树 2.1 概念和结构 2.2 特殊的二叉树 2.2.1 满二叉树 2.2.2 完全二叉树 2.3 二叉树的存储结构 2.3.1 顺序结构 2.3.2 链式结构 …...
Pytorch添加自定义算子之(12)-开闭原则设计tensorrt和onnxruntime推理语义分割模型
一、开闭原则 开闭原则是SOLID原则中的一个,指的是尽量使用开放扩展,关闭修改的设计原则。 在C++中如何使用开闭原则导出动态库,可以按照以下步骤进行: 定义抽象基类:定义动态库中的抽象基类,该基类应该封装可扩展的接口。 实现派生类:实现基类的派生类,这些派生类将封…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

