力扣题目训练(6)

2024年1月30日力扣题目训练

  • 2024年1月30日力扣题目训练
    • 367. 有效的完全平方数
    • 374. 猜数字大小
    • 383. 赎金信
    • 99. 恢复二叉搜索树
    • 105. 从前序与中序遍历序列构造二叉树
    • 51. N 皇后

2024年1月30日力扣题目训练

2024年1月30日第六天编程训练,今天主要是进行一些题训练,包括简单题3道、中等题2道和困难题1道。对于一些经典题目的掌握还是有点小问题,需要利用我们已知的性质去完成。

367. 有效的完全平方数

链接: 完全平方数
难度: 简单
题目:
题目描述
运行示例:
运行示例
思路:
这个题试求平方,但是不能用自带的函数,需要自己写,我观察到一个数的平方根一般都小于等于这个数的一半,我的思路就是基于这一点完成的。官方的话就是采用二分法,因为这个数的平方根一定位于某一区间内,用二分法进行查找。还有其他方法大家可以点击链接查看。
代码:

class Solution {
public:bool isPerfectSquare(int num) {if( num == 1) return true;for(long i = 1; i <= num/2; i++){if(i*i == num) return true;if(i*i > num) return false;}return false;}
};

374. 猜数字大小

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

运行示例:
运行示例

思路:
这也是在一个区间里找数的问题,所以我采用了二分法。
代码:

class Solution {
public:int guessNumber(int n) {int left = 1;int right = n;while(left <= right){int mid = left + (right - left) / 2;if(guess(mid) == 0) return mid;else if(guess(mid) == -1){right = mid - 1;}else{left = mid + 1;}}return -1;}
};

383. 赎金信

链接: 赎金信
难度: 简单
题目:
题目描述

运行示例:
运行示例

思路:
这道题就是看一个字符串中的字母是否能组成另一个字符串,我采用哈希表记录字母出现次数,然后进行对比。
代码:

class Solution {
public:bool canConstruct(string ransomNote, string magazine) {if(ransomNote.size() > magazine.size()) return false;unordered_map<char,int> res;for(int i = 0; i < magazine.size(); i++){res[magazine[i]]++;}for(int i = 0; i < ransomNote.size(); i++){if(res[ransomNote[i]] == 0) return false;else res[ransomNote[i]]--;}return true;}
};

99. 恢复二叉搜索树

链接: 二叉搜索树
难度: 中等
题目:
题目描述

运行示例:
运行示例

思路:
对于二叉搜索树,如果对其进行中序遍历,得到的值序列是递增有序的。不过我知道这条性质,但是不知道怎么搞,所以我看了官方的方法,记录这两位置然后进行交换。
代码:

class Solution {
public:void inorder(TreeNode* root, vector<int>& nums){if(root == NULL) return;inorder(root->left,nums);nums.push_back(root->val);inorder(root->right,nums);}void recover(TreeNode* root, int x, int y, int count){if(root != NULL){cout<< root->val <<endl;if(root->val == x || root->val == y){root->val = (root->val == x)? y:x;count--;if(count <= 0) return;}recover(root->left,x,y,count);recover(root->right,x,y,count);}   }void recoverTree(TreeNode* root) {if(root == NULL) return;vector<int> nums;inorder(root,nums);int index1 = -1;int index2 = -1;for(int i = 0; i < nums.size()-1; i++){if(nums[i+1] < nums[i]){index2 = i+1;if(index1 == -1){index1 = i;}else{break;}}}int x = nums[index1];int y = nums[index2];recover(root, x, y, 2);}
};

105. 从前序与中序遍历序列构造二叉树

链接: 构造二叉树
难度: 中等
题目:
题目描述

运行示例:
运行示例

思路:
二叉树前序遍历的顺序为:根左右。
二叉树中序遍历的顺序为:左根右。
根据这一性质,我采用了递归利用根结点的位置进行构造。
代码:

class Solution {
private:unordered_map<int, int> index;   
public:TreeNode* build(vector<int>& preorder, vector<int>& inorder, int pleft, int pright, int ileft, int iright){if(pleft > pright || ileft > iright) return NULL;int preorder_root = pleft;int inorder_root = index[preorder[preorder_root]];TreeNode* root = new TreeNode(preorder[preorder_root]);int size_left_tree = inorder_root - ileft;root->left = build(preorder,inorder,pleft+1,pleft+size_left_tree,ileft,inorder_root-1);root->right = build(preorder,inorder,pleft+size_left_tree+1,pright,inorder_root+1,iright);return root;}TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {if(preorder.size() != inorder.size() || preorder.size() == 0) return NULL;for (int i = 0; i < inorder.size(); ++i) {index[inorder[i]] = i;}return build(preorder,inorder,0,preorder.size()-1,0,preorder.size()-1);}
};

51. N 皇后

链接: N 皇后
难度: 困难
题目:
题目描述

运行示例:
运行示例

思路:
N皇后是比较经典的一类题,利用的是回溯法。
代码:
置换:

class Solution {
private:vector<vector<string>> res;
public:bool isValid(vector<string>& board,int row, int col){int n = board.size();for(int i = 0; i < n; i++){if(board[i][col] == 'Q') return false;}for (int a = row, b = col; a >= 0 && b >= 0; a--, b--) { // 左上if (board[a][b] == 'Q') return false;}for (int a = row, b = col; a >= 0 && b < n; a--, b++) { // 右上if (board[a][b] == 'Q') return false;}return true;}void backtrack(vector<string>&board,int row,int n){if(row == n) {res.push_back(board);return;}for(int i = 0; i < n; i++){if(isValid(board,row,i)){board[row][i] = 'Q';backtrack(board,row+1,n);board[row][i] = '.';}}}vector<vector<string>> solveNQueens(int n) {vector<string> board(n, string(n, '.'));backtrack(board, 0,n);return res;}
};

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

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

相关文章

在ubuntu上在安装Squid代理服务器

Squid 是一个代理和缓存服务器&#xff0c;它将请求转发到所需的目的地&#xff0c;同时保存请求的内容&#xff0c;当你再次请求相同内容时&#xff0c;他可以向你提供缓冲内容&#xff0c;从而提高访问速度。Squid代理服务器目前支持的协议有&#xff1a;http、SSL、DNS、FTP…

App测试中ios和Android有哪些区别呢?

App测试中&#xff0c;大家最常问到的问题就是&#xff1a;ios和 Android有什么区别呢&#xff1f; 在Android端&#xff0c;我们经常会使用 JavaScript、 HTML、 CSS等技术来编写一些简单的 UI界面。而 iOS端&#xff0c;我们经常会使用到 UI设计、界面布局、代码结构、 API等…

C++——特殊类

特殊类 文章目录 特殊类一、请设计一个类&#xff0c;不能被拷贝二、请设计一个类&#xff0c;只能在堆上创建对象方案一&#xff1a;析构函数私有化方案二&#xff1a;构造函数私有化 三、请设计一个类&#xff0c;只能在栈上创建对象四、请设计一个类&#xff0c;不能被继承五…

微软Office Plus与WPS Office的较量:办公软件市场将迎来巨变?

微软Office Plus在功能表现上远超WPS Office&#xff1f; 微软出品的Office套件实力强劲&#xff0c;其不仅在办公场景中扮演着不可或缺的角色&#xff0c;为用户带来高效便捷的体验&#xff0c;而且在娱乐生活管理等多元领域中同样展现出了卓越的应用价值 作为中国本土办公软…

Leetcode 第 381 场周赛题解

Leetcode 第 381 场周赛题解 Leetcode 第 381 场周赛题解题目1&#xff1a;3014. 输入单词需要的最少按键次数 I思路代码复杂度分析 题目2&#xff1a;3015. 按距离统计房屋对数目 I思路代码复杂度分析 题目3&#xff1a;3016. 输入单词需要的最少按键次数 II思路代码复杂度分析…

HarmonyOS使用Web组件加载页面

1、加载网络页面 在Web组件创建时&#xff0c;指定默认加载的网络页面 。在默认页面加载完成后&#xff0c;如果开发者需要变更此Web组件显示的网络页面&#xff0c;可以通过调用loadUrl()接口加载指定的网页。 默认在Web组件加载完“www.baidu.com”页面后&#xff0c;点击按…

html+js+css静态故宫主题

登录代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>登录 - 故宫博物院</title><…

C语言菜鸟入门·函数

目录 1. 函数的定义 2. 函数声明 3. 函数调用 4. 函数参数 4.1 传值调用 4.2 引用调用 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数&#xff0c;即主函数 main() &#xff0c;所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同…

【C++】C++入门—— 引用

引用 1 前情提要2 概念剖析3 引用特性4 常引用5 使用场景5.1做参数5.2 做返回值 6 传值 传引用的效率比较7 引用与指针的差异Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读下一篇文章见 1 前情提要 在C语言中&#xff0c;我们往往会遇见复杂的指针&#xff08;如…

论文阅读-MapReduce

论文名称&#xff1a;MapReduce: Simplified Data Processing on Large Clusters 翻译的效果不是很好&#xff0c;有空再看一遍&#xff0c;参照一下别人翻译的。 MapReduce:Simplified Data Processing on Large Clusters 中文翻译版(转) - 阿洒 - 博客园 (cnblogs.com) 概…

C#,欧拉数(Eulerian Number)的算法与源代码

1 欧拉数 欧拉数特指 Eulerian Number&#xff0c;不同于 Euler numbers&#xff0c;Eulers number 哦。 组合数学中&#xff0c;欧拉数&#xff08;Eulerian Number&#xff09;是从1到n中正好满足m个元素大于前一个元素&#xff08;具有m个“上升”的排列&#xff09;条件的…

mini-spring 实现应用上下文,自动识别、资源加载、扩展机制

我们不能让面向 Spring 本身开发的 DefaultListableBeanFactory 服务&#xff0c;直接给予用户使用 DefaultListableBeanFactory、XmlBeanDefinitionReader&#xff0c;是我们在目前 Spring 框架中对于服务功能测试的使用方式&#xff0c;它能很好的体现出 Spring 是如何对 xm…

【靶场实战】Pikachu靶场暴力破解关卡详解

Nx01 系统介绍 Pikachu是一个带有漏洞的Web应用系统&#xff0c;在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习&#xff0c;那么Pikachu可能正合你意。 Nx02 Burte Force概述 “暴力破解”是一攻击具手段&#xff0c;在web…

Transformer 自然语言处理(二)

原文&#xff1a;Natural Language Processing with Transformers 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第五章&#xff1a;文本生成 基于 Transformer 的语言模型最令人不安的特点之一是它们生成的文本几乎无法与人类写的文本区分开。一个著名的例子是 Ope…

60、Flink CDC 入门介绍及Streaming ELT示例(同步Mysql数据库数据到Elasticsearch)-完整版

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点&#xff0c;并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分&#xff0c;比如术语、架构、编程模型、编程指南、基本的…

【Docker】在Windows下使用Docker Desktop创建nginx容器并访问默认网站

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是《Docker容器》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对…

布局技巧及CSS初始化

一&#xff0c;margin负值巧妙应用 二&#xff0c;文字围绕浮动元素 三&#xff0c;行内块 四&#xff0c;CSS三角强化 五&#xff0c;CSS初始化 一&#xff0c;margin负值巧妙应用 制作盒子的细线边框&#xff1a; 鼠标经过li后变色&#xff1a; 二&#xff0c;文字围绕…

Redis缓存穿透、缓存击穿、缓存雪崩的解决方案

一、背景 不管是实际工作还是面试&#xff0c;这3个问题都是非常常见的&#xff0c;今天我们就好好探讨一下这个三个问题的解决方案 三者的区别&#xff1a; 缓存穿透&#xff1a;查询缓存和数据库都不存在的数据&#xff0c;缓存没有&#xff0c;数据库也没有 缓存击穿&#…

Java入门高频考查基础知识8(腾讯18问1.5万字参考答案)

刷题专栏&#xff1a;http://t.csdnimg.cn/gvB6r Java 是一种广泛使用的面向对象编程语言&#xff0c;在软件开发领域有着重要的地位。Java 提供了丰富的库和强大的特性&#xff0c;适用于多种应用场景&#xff0c;包括企业应用、移动应用、嵌入式系统等。 以下是几个面试技巧&…

使用AKStream对接gb28181

优点&#xff1a;功能比较多&#xff0c;C#开发的&#xff0c;容易修改&#xff0c;内嵌入了zlmk流媒体服务品&#xff0c;启动简单 缺点&#xff1a;sip对摄像头兼容还有问题&#xff0c;大华接入非常不稳定&#xff0c;注册等待时间久&#xff0c;对海康是正常&#xff0c;占…