力扣题目训练(7)

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

  • 2024年1月31日力扣题目训练
    • 387. 字符串中的第一个唯一字符
    • 389. 找不同
    • 401. 二进制手表
    • 109. 有序链表转换二叉搜索树
    • 114. 二叉树展开为链表
    • 52. N 皇后 II

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

2024年1月31日第七天编程训练,今天主要是进行一些题训练,包括简单题3道、中等题2道和困难题1道。前几天家里有事加上有一个作业所以没办法只能拖到今天,今天能写也是利用了作业数据下载的时间,但是我不会放弃的我会认真完成的。

387. 字符串中的第一个唯一字符

链接: 唯一字符
难度: 简单
题目:
题目描述

运行示例:
运行示例

思路:
找唯一就是计数,我采用的是哈希表。
代码:

class Solution {
public:int firstUniqChar(string s) {unordered_map<char,int> res;for(char ch: s){res[ch]++;}for(int i = 0; i < s.size(); i++){if(res[s[i]] == 1){return i;}}return -1;}
};

389. 找不同

链接: 找不同
难度: 简单
题目:
题目描述

运行示例:
运行示例

思路:
找出添加的字母,也就是计数看哪个多了,所以我采用了哈希表。
代码:

class Solution {
public:char findTheDifference(string s, string t) {unordered_map<char,int>res;char ans;for(int i = 0; i < s.size(); i++){res[s[i]]++;}for(int i = 0; i < t.size(); i++){if(res[t[i]] == 0){ans = t[i];} else res[t[i]]--;}return ans;}
};

401. 二进制手表

链接: 二进制手表
难度: 简单
题目:
题目描述
在这里插入图片描述
在这里插入图片描述

运行示例:
运行示例

思路:
这道题本质就是看二进制中总共有多少个1,所以利用位运算取最高4位和低6位然后计算。
代码:

class Solution {
public:vector<string> readBinaryWatch(int turnedOn) {vector<string> ans;if(turnedOn >= 9) return ans;for(int i = 0; i < 1024; i++){int h = i >>6;int m  = i & 63;if(h < 12 && m < 60 && __builtin_popcount(i) == turnedOn){ans.push_back(to_string(h)+":"+(m<10?"0":"")+to_string(m));}}return ans;}
};

109. 有序链表转换二叉搜索树

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

运行示例:
运行示例

思路:
对于二叉搜索树,如果对其进行中序遍历,得到的值序列是递增有序的。此外左右子树高度差不超过1,利用这两条性质通过分治和中序遍历完成这道题。
代码:

class Solution {
public:int getLength(ListNode* head){int count = 0;while(head!=NULL){count++;head = head->next;}return count;}TreeNode* buildTree(ListNode* &head,int left,int right){if(left > right) return NULL;int mid = (left+right+1)/2;TreeNode* root = new TreeNode();root->left = buildTree(head, left, mid-1);root->val =  head->val;head = head->next;root->right = buildTree(head,mid+1,right);return root;}TreeNode* sortedListToBST(ListNode* head) {int length = getLength(head);return buildTree(head,0,length-1);}
};

114. 二叉树展开为链表

链接: 展开为链表
难度: 中等
题目:
题目描述

运行示例:
运行示例

思路:
二叉树前序遍历的顺序为:根左右。
这个结果也是前序遍历的结果,所以可以利用前序遍历解决。
代码:

class Solution {
public:void preorder(TreeNode*root,vector<TreeNode*> &res){if(root != NULL){res.push_back(root);preorder(root->left,res);preorder(root->right,res);}}void flatten(TreeNode* root) {vector<TreeNode*> res;preorder(root,res);for(int i = 1 ; i < res.size(); i++){TreeNode*pre = res[i-1];TreeNode*curr = res[i];pre->left = NULL;pre->right = curr;}}
};

52. N 皇后 II

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

运行示例:
运行示例

思路:
这与上次的51.N皇后类似,只是输出一个是解决,一个是总数。利用的是回溯法。
代码:

class Solution {
private:int res = 0;
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++;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] = '.';}}}int totalNQueens(int n) {vector<string> board(n, string(n, '.'));backtrack(board, 0,n);return res;}
};

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

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

相关文章

MySQL数据库③_MySQL数据类型和测试

目录 1. MySQL数据类型分类 1.1 类型汇总 1.2 整数类型 1.3 浮点数类型和定点数类型 1.4 字符串类型和文本类型 1.5 日期与时间类型 1.6 二进制类型 2. 有代表的类型测试 2.1 tinyint类型 2.2 bit类型 2.3 float类型 2.4 decimal类型 2.5 char和varchar类型 2.6 …

Java on VS Code 2024年1月更新|JDK 21支持!测试覆盖率功能最新体验!

作者&#xff1a;Nick Zhu - Senior Program Manager, Developer Division At Microsoft 排版&#xff1a;Alan Wang 大家好&#xff0c;欢迎来到 Visual Studio Code for Java 2024年的第一期更新&#xff01;提前祝愿大家春节快乐&#xff01;在本博客中&#xff0c;我们将有…

FPS游戏穿模最强解决方案!开发一款FPS游戏射击游戏真的太简单!

FPS游戏穿模最强解决方案&#xff01;开发一款FPS游戏射击游戏真的太简单&#xff01; 2001年&#xff0c;FPS游戏老大哥《CS》横空出世&#xff0c;迅速在国内外掀起了一波FPS游戏的热潮&#xff0c;随后《CF穿越火线》在国内上线&#xff0c;一举拿下“玩家最喜爱的十大网络…

跑路页面HTML源码

简单的HTMLJSCSS&#xff0c;记事本修改内容&#xff0c;喜欢的朋友可以下载 https://download.csdn.net/download/huayula/88811984

外汇天眼:寻找外汇交易高手,你敢应战么?

在充满变数的金融市场中&#xff0c;外汇市场一直是交易者们追逐高回报的投资之地&#xff0c;而在这个市场上交易高手们的价值愈发明显。那么作为金融领域的启明星&#xff0c;你是否已经准备好了展示自己的交易技能呢&#xff1f;如果你时刻准备着&#xff0c;想和来自全球的…

WPF控件-ItemsControl

介绍 ItemsControl是用于展示一组项的控件。我们常见的列表&#xff08;ListBox&#xff09;、数据表格&#xff08;DataGrid&#xff09;等都是继承自ItemsControl。可用于自定义样式展示各种批量的数据集合。 常见使用示例&#xff1a; <ItemsControl ItemsSource"…

【Java程序设计】【C00245】基于Springboot的家政服务管理平台(有论文)

基于Springboot的家政服务管理平台&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的家政服务管理平台 本系统分为前台模块、管理员功能模块、用户功能模块以及服务人员功能模块。 前台模块&#xff1a;系统首页的…

Qt PCL学习(一):环境搭建

参考 (QT配置pcl)PCL1.12.1QT5.15.2vs2019cmake3.22.4vtk9.1.0visual studio2019Qt5.15.2PCL1.12.1vtk9.1.0cmake3.22.2 本博客用到的所有资源 版本一览&#xff1a;Visual Studio 2019 Qt 5.15.2 PCL 1.12.1 VTK 9.1.0https://pan.baidu.com/s/1xW7xCdR5QzgS1_d1NeIZpQ?pw…

SpringBoot实战第二天

今日战报 继续完善用户相关接口开发&#xff1a; 1.完成获取用户信息功能 2.完成更新用户信息功能 3.完成更新用户头像功能 4.完成更新用户密码功能 获取用户信息 接口文档 如接口文档所示&#xff0c;我们需要做的就是从header中的Authorization中读取token&#xff0c;解码…

Nginx: a little source code

Nginx被称为C程序员必学的源码之一&#xff0c;我觉得名副其实&#xff0c;它的事件机制、内存管理、进程通信都可以说是顶级实践&#xff0c;非常值得学习。 Nginx源码比较多&#xff0c;本文只看几个重要的模块&#xff0c;更详细的内容请参考《深入理解nginx模块开发与架构》…

单片机学习笔记---按键控制LED流水灯模式定时器时钟

目录 代码讲解 初始化函数 1.定时器部分的配置步骤 第一步&#xff0c;对TMOD的赋值 第二步&#xff0c;给TF0赋值 第三步&#xff0c;给TR0赋值开启定时器 第四步&#xff0c;给TL0和TH0赋初值 2.中断系统部分的配置步骤 第一步&#xff0c;给ET0赋值 第二步&#x…

Linux系统安全①iptables防火墙

目录 一.iptables防火墙概述 1.netfilter与iptables &#xff08;1&#xff09;netfilter &#xff08;2&#xff09;iptables 2.iptables防火墙默认规则表、链结构 二.iptables四表五链 1.四表 2.五链 3.总结 三.iptables的配置 1.安装 2.配置方法 &#xff08;1…