力扣题目训练(21)

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

  • 2024年2月14日力扣题目训练
    • 605. 种花问题
    • 617. 合并二叉树
    • 628. 三个数的最大乘积
    • 289. 生命游戏
    • 299. 猜数字游戏
    • 149. 直线上最多的点数

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

2024年2月14日第二十一天编程训练,今天主要是进行一些题训练,包括简单题3道、中等题2道和困难题1道。惰性太强现在才完成,不过之后我会认真完成的,我会慢慢补回来,争取一天发两篇,把之前的都补上。

605. 种花问题

链接: 种花问题
难度: 简单
题目:
题目描述
运行示例:
运行示例

思路:
这道题可以采用贪心策略完成。我们需要在不打破种植规则的情况下在花坛内种入 n朵花,那么我们需要在不打破种植规则的情况下种入尽可能多的花,然后判断可以种入的花的最多数量是否大于或等于 n。我们需要判断在已经有花的范围内还能种多少花。
代码:

class Solution {
public:bool canPlaceFlowers(vector<int>& flowerbed, int n) {int count = 0;int m = flowerbed.size();int pre = -1;for(int i = 0; i < m; i++){if(flowerbed[i] == 1){if(pre < 0){count += i/2;}else{count += (i - pre - 2) / 2;}if(count >= n) return true;pre = i;}}if(pre < 0){count += (m+1)/2;}else{count += (m - pre - 1)/2;}return count >= n;}
};

617. 合并二叉树

链接: 合并二叉树
难度: 简单
题目:
题目描述
运行示例:
运行示例
思路:
这道题我们可以看就是利用遍历然后对对应位置的值进行相加即可,我们可以采用深度优先遍历和广度优先遍历,我采用深度优先遍历。
代码:

class Solution {
public:TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {if(root1 == NULL) return root2;if(root2 == NULL) return root1;TreeNode* newroot = new TreeNode(root1->val + root2->val);newroot->left = mergeTrees(root1->left,root2->left);newroot->right = mergeTrees(root1->right,root2->right);return newroot;}
};

628. 三个数的最大乘积

链接: 最大乘积
难度: 简单
题目:
题目描述

运行示例:
运行示例

思路:
这道题就是排序,然后找三个数相乘最大,若全是正数肯定是最大的三个数相乘,但是注意如果有负数的话,两个最小负数与最大正数相乘也可能是最大。
代码:

class Solution {
public:int maximumProduct(vector<int>& nums) {sort(nums.begin(),nums.end());int n = nums.size();return max(nums[0] * nums[1] * nums[n - 1], nums[n - 3] * nums[n - 2] * nums[n - 1]);}
};

289. 生命游戏

链接: 生命游戏
难度: 中等
题目:
题目描述

运行示例:
运行示例

思路:
这道题我们可以复制原数组,利用复制后的数组来修改现在数组的状态。
代码:

class Solution {
public:void gameOfLife(vector<vector<int>>& board) {int neighbors[3] = {0, 1, -1};int rows = board.size();int cols = board[0].size();vector<vector<int> >copyBoard(rows, vector<int>(cols, 0));for (int row = 0; row < rows; row++) {for (int col = 0; col < cols; col++) {copyBoard[row][col] = board[row][col];}}for (int row = 0; row < rows; row++) {for (int col = 0; col < cols; col++) {int liveNeighbors = 0;for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {if (!(neighbors[i] == 0 && neighbors[j] == 0)) {int r = (row + neighbors[i]);int c = (col + neighbors[j]);if ((r < rows && r >= 0) && (c < cols && c >= 0) && (copyBoard[r][c] == 1)) {liveNeighbors += 1;}}}}  if ((copyBoard[row][col] == 1) && (liveNeighbors < 2 || liveNeighbors > 3)) {board[row][col] = 0;}if (copyBoard[row][col] == 0 && liveNeighbors == 3) {board[row][col] = 1;}}}}
};

299. 猜数字游戏

链接: 猜数字游戏
难度: 中等
题目:
题目描述

运行示例:
运行示例

思路:
这道题就是利用遍历,然后统计出错的个数以及正确的个数。
代码:

class Solution {
public:string getHint(string secret, string guess) {int bulls = 0;vector<int> ctS(10),ctG(10);for(int i = 0; i < secret.size(); i++){if(secret[i] == guess[i]) bulls++;else{ctS[secret[i]- '0']++;ctG[guess[i] - '0']++;}}int count = 0;for(int i = 0 ;i < 10; i++){count += min(ctS[i],ctG[i]);}return to_string(bulls) + 'A' + to_string(count) + 'B';}
};

149. 直线上最多的点数

链接: 直线上最多的点数
难度: 困难
题目:
题目描述

运行示例:
运行示例

思路:
这道题我们就是可以利用枚举,我们找任意两点构成直线,看其他点是否共线。改进的话就是利用哈希表记录所有共线的斜率情况。
代码:

class Solution {
public:int maxPoints(vector<vector<int>>& points) {int ans = 2;if(points.size() == 1) return 1;for(int i = 0; i < points.size()-1; i++){vector<int> pointa = points[i];for(int j = i+1; j < points.size(); j++){vector<int> pointb = points[j];int number = 2;for(int k = 0; k < points.size() && k!=i && k!= j;k++){vector<int> pointc = points[k];int s1 = (pointb[1] - pointa[1])*(pointc[0]-pointa[0]);int s2 = (pointc[1] - pointa[1])*(pointb[0]-pointa[0]);if(s1 == s2) number++;}ans = max(ans,number);}}return ans;}
};

改进

class Solution {
public:int gcd(int a, int b) {return b == 0 ? a : gcd(b, a % b);}int maxPoints(vector<vector<int>>& points) {int ans = 1;if(points.size() == 1) return 1;for(int i = 0; i < points.size(); i++){vector<int> pointa = points[i];unordered_map<string,int>map;int maxv = 0;for(int j = i+1; j < points.size(); j++){vector<int> pointb = points[j];int s1 = pointb[1] - pointa[1];int s2 = pointb[0] - pointa[0];int k = gcd(s1, s2);string key = to_string(s1 / k) + "_" + to_string(s2 / k);map[key]++;maxv = max(maxv,map[key]);}ans = max(ans,maxv+1);}return ans;}
};

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

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

相关文章

【智能算法】人工水母搜索算法(JS)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.代码实现4.参考文献 1.背景 2020年&#xff0c;Chou 等人受到水母运动行为启发&#xff0c;提出了人工水母搜索算法(Artificial Jellyfish Search Optimizer, JS)。 2.算法原理 2.1算法思想 JS模拟了水母的搜索行为&#xf…

关于OPC-UA客户端调用服务端方法CallMethod节点的问题

在OpcUaClient中可以通过CallMethodByNodeId调用方法节点 //// 摘要:// call a server method//// 参数:// tagParent:// 方法的父节点tag//// tag:// 方法的节点tag//// args:// 传递的参数//// 返回结果:// 输出的结果值public object[] CallMetho…

栈与队列|232.用栈实现队列

力扣题目链接 class MyQueue { public:stack<int> stIn;stack<int> stOut;/** Initialize your data structure here. */MyQueue() {}/** Push element x to the back of queue. */void push(int x) {stIn.push(x);}/** Removes the element from in front of que…

数据结构--线性表

1.线性表的定义&#xff1a; 存在唯一的一个被称为“第一个”的数据元素&#xff1b; 存在唯一的一个被称为“最后一个”的数据元素&#xff1b; 除第一个之外&#xff0c;集合中的每一个数据元素都只有一个前驱&#xff1b; 除最后一个之外&#xff0c;集合中的每一个数据…

大话设计模式——7.抽象工厂模式(Abstract Factory Pattern)

1.介绍 抽象工厂模式是工厂模式的进一步优化&#xff0c;提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类。属于创建型模式。 UML图&#xff1a; 2.示例 车辆制造工厂&#xff0c;不仅可以制造轿车也可以用来生产自行车。 1&#xff09;Abs…

vivado 逻辑优化约束、功率优化、Vivado Tools电源优化

逻辑优化约束 逻辑保护 Vivado设计套件在逻辑优化过程中尊重DONT_TOUCH属性。确实如此不优化具有这些特性的离开网或单元。为了加快网络选择过程&#xff0c;网络具有DONT_TOUCH的属性被预过滤并且不被考虑用于物理优化。对于有关详细信息&#xff0c;请参阅《Vivado Design …

10、MongoDB -- MongoDB 的 MongoTemplate 的功能和用法介绍

目录 MongoTemplate 的功能和用法演示前提&#xff1a;登录单机模式的 mongodb 服务器命令登录【test】数据库的 mongodb 客户端命令登录【admin】数据库的 mongodb 客户端命令 为 MongoDB 提供的两个 Starterspring-boot-starter-data-mongodb&#xff08;为以同步方式操作 Mo…

C语言:操作符详解(下)

目录 一、逗号表达式二、下标访问[ ]、函数调用()1. [ ]下标引用操作符2.函数调用操作符 三、结构成员访问操作符1.结构体(1) 结构的声明(2) 结构体变量的定义和初始化 2.结构成员访问操作符(1)结构体成员的直接访问(2)结构体成员的间接访问 四、操作符的属性&#xff1a;优先级…

深入理解JMM

一、什么是JMM JMM&#xff08;java memory model&#xff09;Java内存模型&#xff1a;是java虚拟机规范中定义的一组规范&#xff0c;用于屏蔽掉各种硬件和操作系统的内存访问差异&#xff0c;以实现让JAVA程序在各平台都能达到一致的并发结果。其主要规定了线程和内存之间的…

对称加密算法(DES、AES)

加密密钥 解密密钥 DES现在基本不再使用 3DES处理速度慢 AES通常用于移动通信系统加密以及基于SSH协议的软件

c++入门你需要知道的知识点(上)

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 今日主菜&#xff1a;c入门 主厨&#xff1a;邪王真眼 所属专栏&#xff1a;c专栏 主厨的主页&#xff1a;Chef‘s blog 前言&#xff1a; 咱也是好久没有更…

Leet code 1658 将x减到0的最小操作数

解题思路&#xff1a;滑动窗口 主要思想&#xff1a;正难逆简 题目需要左找一个数 右找一个数 我们不如直接找中间最长的一连串子数让这串子树和为 数组子树和减去X 找不到就返回 -1 滑动窗口双指针从左端出发&#xff0c;进行 进窗口 判断 出窗口 更新结果四个步骤 代码…

防火墙中的SNAT 与DNAT

SNAT&#xff1a;让内网机器可以访问外网服务器 DNAT:让外网机器可以访问内网服务器 SNAT的原理 源地址转换&#xff0c;根据指定条件修改数据包的源IP地址&#xff0c;通常被叫做源映射 数据包从内网发送到公网时&#xff0c;SNAT会把数据包的源IP由私网IP转换成公网IP 当响应…

【JetsonNano】onnxruntime-gpu 环境编译和安装,支持 Python 和 C++ 开发

1. 设备 2. 环境 sudo apt-get install protobuf-compiler libprotoc-devexport PATH/usr/local/cuda/bin:${PATH} export CUDA_PATH/usr/local/cuda export cuDNN_PATH/usr/lib/aarch64-linux-gnu export CMAKE_ARGS"-DONNX_CUSTOM_PROTOC_EXECUTABLE/usr/bin/protoc&qu…

OJ_点菜问题(背包问题)

题干 C实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<vector> using namespace std;int main() {int c, n;scanf("%d%d", &c, &n);int p[101];int v[101];for (int i 0; i < n; i){scanf("%d%d", &p[i],…

Android Studio实现内容丰富的安卓宠物用品管理系统

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 项目编号128 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.系统公告 3.宠物社区&#xff08;可发布宠物帖子&#xf…

47、C++/引用,函数重载,类相关学习20240312

一、自己封装一个矩形类(Rect)&#xff0c;拥有私有属性:宽度(width)、高度(height)&#xff0c; 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和面积函数:void show()。 代码&…

架构设计-复杂度来源:高性能

对性能孜孜不倦的追求是整个人类技术不断发展的根本驱动力。例如计算机&#xff0c;从电子管计算机到晶体管计算机再到集成电路计算机&#xff0c;运算性能从每秒几次提升到每秒几亿次。但伴随性能越来越高&#xff0c;相应的方法和系统复杂度也是越来越高。现代的计算机 CPU 集…

Html+threejs数字孪生三维场景实现

程序示例精选 Htmlthreejs数字孪生三维场景实现 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《Htmlthreejs数字孪生三维场景实现》编写代码&#xff0c;代码整洁&#xff0c;规则&#xf…

第十四届蓝桥杯省赛真题 Java 研究生 组【原卷】

文章目录 发现宝藏【考生须知】试题 A: 特殊日期试题 B: 与或异或试题 C: 棋盘试题 D: 子矩阵试题 E : \mathrm{E}: E: 互质数的个数试题 F: 小蓝的旅行计划试题 G: 奇怪的数试题 H: 太阳试题 I: 高塔试题 J \mathrm{J} J : 反异或 01 串 发现宝藏 前些天发现了一个巨牛的人…