Leetcode 每日一题双题版(2.25+2.24)模拟练细节

前言

刚刚敲了今天刷新的题目,然后昨天的也写了,就想着更新一下blog

两道题都是模拟题,对于模拟,我的看法就是看懂题目,拿捏细节,难度就不大了。

2.24 球会落在何处

题目链接:1706. 球会落何处 - 力扣(LeetCode) (leetcode-cn.com)

简述,就是给你一个二维数组,只有1 和 -1,1表示左上角到右下角的斜线,-1是反过来,这些斜线就是挡板,问你从最上面小球落下,看能否到达底部,能填1,不能-1。

我在leetcode的题解:模拟 - 球会落何处 - 力扣(LeetCode) (leetcode-cn.com)

思路

这不就是一道小破模拟嘛,想清楚只有碰到V字或者在下降时越过边界才会不能到达底部。

那么问题就转化成什么时候V,同一行如果出现连续两个值不相同,那么是不是一定会V

code(C++)

#include<iostream>
#include<vector>using namespace std;class Solution
{public:/// <summary>/// 模拟 有手就行系列/// 先从列开始,然后遍历行,列的位置不断更新,如果出现越过边界时或者V字形则算不能落在底部/// 咋算V?/// 同一行变化前前和变化后的数值必须相同/// so,have hand just ok!/// </summary>/// <param name="grid"></param>/// <returns></returns>vector<int> findBall(vector<vector<int>>& grid) {int m = grid.size(), n = grid[0].size();vector<int> ans(n);for (int i = 0; i < n; ++i){// 球的初始列int col = i;for (auto& row : grid){int num = row[col];col += row[col];// 越过边界或者出现V字形if (col < 0 || col >= n || row[col] != num){col = -1;break;}}ans[i] = col;}return ans;}
};int main(int argc, char** argv)
{int m, n;cin >> m >> n;vector<vector<int>> grid(m, vector<int>(n));for (int i = 0; i < m; ++i){for (int j = 0; j < n; ++j){cin >> grid[i][j];}}Solution sol;auto ans = sol.findBall(grid);for (int i = 0; i < n; ++i){cout << ans[i] << " ";}cout << endl;return 0;
}

2.25 复数乘法

题目链接:537. 复数乘法 - 力扣(LeetCode) (leetcode-cn.com)

简述,就是给你两个字符串复数,然后算出他们的乘积,返回乘积的字符串形式就行了。

我的题解:简单模拟 - 复数乘法 - 力扣(LeetCode) (leetcode-cn.com)

思路

读完题目,很直接啊。先从字符串中取出系数,然后计算出答案的系数最后返回成字符串形式就好了。

这里对系数转字符串,我使用了C++的sstream库的字符串流对象stingstream,这里在多次使用的时候有个小细节,我们需要清空流对象的缓冲区,使用clear()函数可以解决,其实稳妥来写还应该加一句.str("")置空。

code(C++)

#include<iostream>
#include<string>
#include<sstream>
using namespace std;class Solution
{public:/// <summary>/// 简答模拟/// 先从字符串中得出系数,需要注意负号/// 然后根据四个系数计算出答案的系数/// 将答案转成字符串拼接即可/// </summary>/// <param name="num1">复数1</param>/// <param name="num2">复数2</param>/// <returns>答案复数</returns>string complexNumberMultiply(string num1, string num2) {// 长长整形系数,我不相信会有超过这个长度的系数!如果超过则需要写一个大数乘法函数long long a1 = 0, b1 = 0, a2 = 0, b2 = 0;StringToNum(a1, b1, num1);StringToNum(a2, b2, num2);// 计算答案系数long long a = a1 * a2 - b1 * b2;long long b = a1 * b2 + a2 * b1;// 字符串流,用于将数字转字符串stringstream ss;string str, ans;ss << a;ss >> str;// 细节,将字符串流清空ss.clear();ans = str + "+";ss << b;ss >> str;ss.clear();ans += str + "i";return ans;}
private:/// <summary>/// 从字符串数字中取出系数/// </summary>/// <param name="a"></param>/// <param name="b"></param>/// <param name="num"></param>void StringToNum(long long& a, long long& b, string num){// 记录是否有负号bool f1 = false, f2 = f1;// 记录加号bool flag = false;for (int i = 0; i < num.size() - 1; ++i){char ch = num[i];if (ch == '-' && i == 0){f1 = true;}else if (ch == '-' && i != 0){f2 = true;}else if (ch == '+'){flag = true;}else if (!flag){a = a * 10 + (int)(ch - '0');}else{b = b * 10 + (int)(ch - '0');}}if (f1){a = -a;}if (f2){b = -b;}}
};int main(int argc, char** argv)
{string num1, num2;cin >> num1 >> num2;Solution sol;cout << sol.complexNumberMultiply(num1, num2) << endl;return 0;
}

后话

最近打了codeforces和牛客的比赛,双双折戟了,可能是太久没有刷算法,退化了,以后还是保持下去。

共勉,uu们。

Leetcode 每日一题双题版(2.25+2.24)模拟练细节相关推荐

  1. 【系统分析师之路】系统分析师下午案例模拟题(2021版)

    [系统分析师之路]系统分析师下午案例模拟题(2021版) 系统分析师下午案例分析模拟题 [系统分析师之路]系统分析师下午案例模拟题(2021版) 系统分析师下午案例模拟题一 系统分析师下午案例模拟题二 ...

  2. 【LeetCode每日一题】——109.有序链表转换二叉搜索树

    文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[题目提示] 七[解题思路] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 二叉树 二[题 ...

  3. leetcode每日刷题计划-简单篇day8

    leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...

  4. 经典算法题每日演练——第十九题 双端队列

    经典算法题每日演练--第十九题 双端队列 原文:经典算法题每日演练--第十九题 双端队列 话说大学的时候老师说妹子比工作重要~,工作可以再换,妹子这个...所以...这两个月也就一直忙着Fall in ...

  5. Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)

    思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...

  6. 【LeetCode每日一题】1723. 完成所有工作的最短时间

    [LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...

  7. leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用

    leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...

  8. LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色

    LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...

  9. leetcode每日一题·救生艇问题(Python)

    leetcode每日一题·救生艇问题(Python) 问题描述 题目入口 题目思路 首先分析问题,一个船最多坐两人,因此我们可以把这个问题看作两两组合的问题,并且如果最重的那个人和最轻的人加起来大于l ...

最新文章

  1. 淘宝开源代码质量检测工具!
  2. 关于从 coding 拉项目的操作
  3. 怎么解决深入学习PHP的瓶颈?
  4. MapReduce提交作业常见问题
  5. python 查找指定字符在字符串中的次数(全)
  6. mysql基于.frm和.ibd进行mysql数据恢复
  7. 导入已有项目到svn
  8. jQuery链式操作[转]
  9. docker安装redis,使用jedis轻松操作redis
  10. python代码翻译器-Python一键转Java?quot;谷歌翻译”你别闹(附链接)
  11. anaconda安装第三方库两种方式
  12. /build/tools/caffe.bin工具简析
  13. 高一计算机知识点第一章,第一章计算机基础知识知识点总结
  14. 使用flutter控制蓝牙通讯_使用Flutter控制蓝牙通讯
  15. 浅谈vue的生命周期
  16. 逆水寒服务器什么时候能维护好,逆水寒更新了什么内容 8月23日官方维护内容及时间一览...
  17. 真正的朋友与普通的朋友的区别 (转)
  18. java变量与常量的区别_Java变量与常量
  19. opencv 中函数的一相关说明,如:cvtColor和cvCvtColor区别
  20. Unity3D中Rigidbody.velocity和Addforce的区别

热门文章

  1. 【软件安装】SPSS22.0安装
  2. 用C语言计算水分子的个数
  3. php实现仿淘票票订票网站
  4. 上班族如何提高“非工资收入”?跟清北大咖零基础学理财
  5. 如何让AR拥有镜子的反光效果(ios)
  6. USB协议详解第3讲(USB描述符-设备描述符)
  7. 黑龙江省谷歌地球高程DEM等高线下载
  8. C# Matrix类
  9. 【解释型语言】Python-IO
  10. 红灯须硬闯,马路要横穿(文/王路)