力扣题目训练(12)

2024年2月5日力扣题目训练

  • 2024年2月5日力扣题目训练
    • 476. 数字的补数
    • 482. 密钥格式化
    • 485. 最大连续 1 的个数
    • 148. 排序链表
    • 164. 最大间距

2024年2月5日力扣题目训练

2024年2月5日第十二天编程训练,今天主要是进行一些题训练,包括简单题3道、中等题2道和困难题1道。惰性太强现在才完成,不过之后我会认真完成的。

476. 数字的补数

链接: 数字的补数
难度: 简单
题目:
题目描述

运行示例:
运行示例

思路:
由题目可知,我们可以将 num二进制表示的每一位取反。因此我们需要首先找到 num二进制表示最高位的那个 1,再将这个 1以及更低的位进行取反。
如果 num 二进制表示最高位的 1 是第 i (0≤i≤30)位,那么一定有:2i≤num<2i+1
因此我们可以使用一次遍历,在 [0,30]中找出 i的值。在这之后,我们就可以遍历 num的第 0∼i个二进制位,将它们依次进行取反。
代码:

class Solution {
public:int findComplement(int num) {int highbit = 0;for(int i = 1; i < 31; i++){if(num >= (1 << i)){highbit = i;}else{break;}}int mask = (highbit == 30 ? 0x7fffffff : (1 << (highbit + 1)) - 1);return num ^ mask;}
};

482. 密钥格式化

链接: 密钥格式化
难度: 简单
题目:
题目描述

运行示例:
运行示例

思路:
这道题本质就是对原来字符串进行分组,将’ - '分配到每组,主要是遍历。
代码:

class Solution {
public:string licenseKeyFormatting(string s, int k) {string res,ans;for(int i = 0; i < s.size(); i++){if(s[i] != '-'){if(s[i] >= 'a' && s[i] <= 'z'){res += s[i]-'a'+'A';}else{res+= s[i];}}}int count = 0;for(int i = res.size()-1; i >= 0; i--){if(count % k == 0 && count != 0){ans+='-';}ans+=res[i];count++;}reverse(ans.begin(),ans.end());return ans;}
};

485. 最大连续 1 的个数

链接: 连续 1 的个数
难度: 简单
题目:
题目描述

运行示例:
运行示例

思路:
这道题是一道比较简单问题,只需遍历一次记录连续1的个数即可。
代码:

class Solution {
public:int findMaxConsecutiveOnes(vector<int>& nums) {vector<int> dp(nums.size()+1,0);int ans = 0;for(int i = 1 ; i <= nums.size(); i++){if(nums[i-1] == 1){dp[i] = dp[i-1] + 1;ans = (ans > dp[i])? ans:dp[i];}else{dp[i] = 0;}}return ans;}
};

148. 排序链表

链接: 排序链表
难度: 中等
题目:
题目描述

运行示例:
运行示例

思路:
这道题其实跟147. 对链表进行插入排序类似,我采用了相同方法解决,但很容易超时,所以官方的方法是归并排序完成。
代码:

class Solution {
public:ListNode* sortList(ListNode* head) {if(head == NULL) return head;ListNode* newhead = new ListNode(0);newhead->next = head;ListNode* p = head;ListNode* curr = head->next;while(curr != NULL){if(p->val <= curr->val){p = p->next;}else{ListNode* pre = newhead;while(pre->next->val <= curr->val) pre = pre->next;p->next = curr->next;curr->next = pre->next;pre->next = curr;}curr = p->next;}return newhead->next;}
};

164. 最大间距

链接: 最大间距
难度: 中等
题目:
题目描述

运行示例:
运行示例

思路:
这道题就是利用自带的排序函数,之后算差值,不过官方的方法是基数排序,没有利用自带的函数。

代码:

class Solution {
public:int maximumGap(vector<int>& nums) {if(nums.size() < 2) return 0;sort(nums.begin(),nums.end());vector<int> res(nums.size());int count = 0;for(int i = 1; i < nums.size(); i++){count = (nums[i]-nums[i-1]) > count ?(nums[i]-nums[i-1]):count;}return count;}
};

链接:
难度: 困难
题目:
题目描述

运行示例:
运行示例

思路:
这道题我知道是找一根柱子的左侧且最近的小于其高度的柱子,但我不太懂如何利用栈完成这道题。
官方解法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码:

class Solution {
public:int largestRectangleArea(vector<int>& heights) {int n = heights.size();if(n == 0) return 0;vector<int> left(n),right(n);stack<int> st;for(int i = 0; i < n; i++){while(!st.empty() && heights[st.top()] >= heights[i]){st.pop();}left[i] = (st.empty()? -1:st.top());st.push(i);}st = stack<int>();for(int i = n -1; i >= 0; i--){while(!st.empty() && heights[st.top()] >= heights[i]){st.pop();}right[i] = (st.empty()? n:st.top());st.push(i);}int ans = 0;for (int i = 0; i < n; ++i) {ans = max(ans, (right[i] - left[i] - 1) * heights[i]);}return ans;}
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode--代码详解 231.2的幂

231. 2的幂 题目 给你一个整数 n&#xff0c;请你判断该整数是否是 2 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在一个整数 x 使得 n 2x &#xff0c;则认为 n 是 2 的幂次方。 示例 1&#xff1a; 输入&#xff1a;n 1…

一起学量化之DMI指标

DMI指标(Directional Movement Index)是由J. Welles Wilder在1978年开发的,用于分析资产价格动向和趋势强度的技术指标。DMI包括两条主要的线:正向指标(+DI)和负向指标(-DI),以及衡量趋势强度的平均方向指数(ADX)。 1. DMI指标的组成 +DI(正向指标):测量上升趋势…

项目第一次git commit后如何撤销

问题描述&#xff1a; # 1. 新建gitcode目录&#xff0c;然后在目录下 git init# 2. 用idea打开目录后&#xff0c;新建.gitignore文件后 git add .git commit -m "init project"git log# 3. 就出现如下图情况目的&#xff1a;向撤销该次代码提交 # 仅撤销 git com…

Stable Diffusion教程——常用插件安装与测试(一)

前言 随着Stable Diffusion不断演进&#xff0c;越来越多的开发者开始涉足插件开发。尽管网络上存在大量教程&#xff0c;但它们通常零散分布&#xff0c;逐个学习和查找非常耗时&#xff0c;使人感觉每天都在劳累思考。这里总结了Stable Diffusion常用的插件安装与测试方法。…

表的操作【mysql数据库】

目录 一、创建表 二、查看表 三、修改表 改表名&#xff1a; 新增一列&#xff1a; 修改某列的属性&#xff1a; 删除某列&#xff1a; 改列名 四、删除表 一、创建表 二、查看表 desc&#xff1a;查看表的详细信息 查看建表时的详细信息&#xff1a; 三、修改表 改表…

第15讲 用户投票实现

用户投票实现 新建用户投票详情表t_vote_detail create table t_vote_detail (id int (11),vote_id int (11),vote_item_id int (11),vote_date datetime ,openid varchar (600) ); /* SQLyog Ultimate v11.33 (64 bit) MySQL - 5.7.18-log : Database - db_vote3 **********…

springboot/ssm自动售货机系统Java在线购物商城管理系统

springboot/ssm自动售货机系统Java在线购物商城管理系统 开发语言&#xff1a;Java 框架&#xff1a;springboot&#xff08;可改ssm&#xff09; vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&…

Java多线程系列——(一)概述

简介 在计算机编程中&#xff0c;多线程是一种重要的概念&#xff0c;允许程序同时执行多个任务&#xff0c;提高程序的效率和性能。Java作为一门广泛应用于软件开发的编程语言&#xff0c;也提供了丰富的多线程支持。本文将简要介绍Java多线程的基本概念、使用方法以及相关特…

Spring学习笔记(二)Spring的控制反转(设计原则)与依赖注入(设计模式)

一、控制反转&#xff1a;缩写IoC 是一种设计原则&#xff0c;降低程序代码之间的耦合度 对象由Ioc容器统一管理&#xff0c;当程序需要使用对象时直接从IoC容器中获取。这样对象的控制权就从应用程序转移到了IoC容器 二、依赖注入&#xff1a;缩写DI 依赖注入是一种消除类之…

20-k8s中pod的调度-nodeSelector节点选择器

一、概念 我们先创建一个普通的deploy资源&#xff0c;设置为10个副本 [rootk8s231 dns]# cat deploy.yaml apiVersion: apps/v1 kind: Deployment metadata: name: dm01 spec: replicas: 10 selector: matchLabels: k8s: k8s template: metadata: …

JavaScript学习之旅9------JavaScript面向对象编程(OOP)全面解析

目录 写在开头1. JavaScript面向对象的基础1.1 类与对象的定义1.1.1 类的概念1.1.2 对象的概念 1.2 创建对象的方法1.2.1 使用构造函数1.2.2 使用类&#xff08;ES6新特性&#xff09; 2. JavaScript中的继承2.1 继承的概念2.2 实现继承的方式2.2.1 原型链继承2.2.2 构造函数继…

红队打靶练习:IMF: 1

目录 信息收集 1、arp 2、nmap 3、nikto 目录探测 gobuster dirsearch WEB 信息收集 get flag1 get flag2 get flag3 SQL注入 漏洞探测 脱库 get flag4 文件上传 反弹shell 提权 get flag5 get flag6 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# a…

计算机设计大赛 深度学习中文汉字识别

文章目录 0 前言1 数据集合2 网络构建3 模型训练4 模型性能评估5 文字预测6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习中文汉字识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xf…

【云原生之kubernetes实战】在k8s环境下部署Mikochi文件管理工具(配置持久化存储)

【云原生之kubernetes实战】在k8s环境下部署Mikochi文件管理工具(配置持久化存储) 一、Mikochi介绍二、本次实践介绍2.1 本次实践简介2.2 本次环境规划2.3 本次实践存储介绍2.4 k8s存储介绍三、检查k8s环境3.1 检查工作节点状态3.2 检查系统pod状态四、编辑mikochi.yaml文件4…

Vue练习4:插槽

预览 <Layout><template #left><div class"left">左边栏区域&#xff0c;宽度适应内容&#xff0c;溢出隐藏</div></template><template #main><div class"main">中间区域</div></template><te…

17.Qt 单选框相关操作

目录 前言&#xff1a; 技能&#xff1a; 内容&#xff1a; 1. 布置界面 2.管理 3.槽函数 参考&#xff1a; 前言&#xff1a; 组合选择只能选择一个的单选框实现&#xff0c;以及管理组合单选框 技能&#xff1a; <QRadioButton> <QButtonGroup> 内容&…

ThinkPHP框架使用工厂模式对接多个物流公司下单接口架构示例(php7.0及以上)

对接多个物流公司下单接口和获取物流支持目的地接口&#xff0c;用ThinkPHP框架使用工厂模式写了一个示例&#xff0c;包括如何创建目录及文件命名方式。 首先&#xff0c;我们需要定义一个物流公司的接口&#xff08;Interface&#xff09;&#xff1a; // application/Inte…

快速实现用户认证:使用Python和Flask配合PyJWT生成与解密Token的教程及示例代码

生成token 与解密 token 和 拦截器 #学习交流 访问 # https://v.iiar.cnimport jwt import datetime from models import XUser from flask import request, jsonify from functools import wrapsSECRET_KEY XPay# 创建token def generate_token(user_id):try:payload {exp:…

如何在多头自注意力机制的交叉学习中引入对于物理、生理、心理世界客观规律的对照验证...

要在多头自注意力机制的交叉学习中引入对于物理世界客观规律的对照验证&#xff0c;可以考虑以下方法&#xff1a; 1、引入物理模型 首先&#xff0c;建立一个物理模型&#xff0c;该模型能够描述物理世界中的客观规律。这个模型可以是已知的科学理论&#xff0c;也可以是通过实…

Nginx静态内容和反向代理

文章目录 一、Nginx介绍1. 简介2. 相关网站3. 配置文件 二、location说明1. 匹配规则2. 替换匹配部分 三、Nginx代理1. Spring服务代理2. MySQL代理3. MinIO代理 一、Nginx介绍 1. 简介 Nginx&#xff08;读作“engine x”&#xff09;是一个高性能的开源HTTP和反向代理服务器…