秋招突击——算法打卡——5/28——复习{Z字形变换、两数之和}——新做:{整数反转、字符串转整数}

文章目录

    • 复习
      • Z字形变换
        • 实现代码
        • 参考代码
      • 两数之和
        • 复习代码
    • 新作
        • 整数反转
          • 个人实现
            • 实现代码
        • 参考做法
        • 字符串转换整数
        • 个人解法
      • 分析总结

复习

Z字形变换


在这里插入图片描述
在这里插入图片描述

实现代码
  • 这里使用了他的思想,但是没有用他的代码,虽然已经比上次简洁了,但是还是不够,在学习一下他的代码!
 string convert(string s,int numRows){string res[numRows];string r ;if (numRows == 1 )  return s;for (int i = 0; i < s.size(); ++i) {if (i % (2 * numRows - 2) == 0)res[0] += s[i];if(i % (2 * numRows - 2) == (numRows - 1))res[numRows - 1] += s[i];else{for (int j = 1; j < numRows - 1; ++j) {if(i % (2 * numRows - 2) == j || i % (2 * numRows - 2) == (2 * numRows - 2 - j))res[j] += s[i];}}}for (int i = 0; i < numRows; ++i) {r += res[i];}return r;}
参考代码
 string convert(string s,int n){string r ;if (n == 1 )  return s;// 分别遍历一下numRows还有整个字符串for (int i = 0; i < n; ++i) {if(i == 0 || i == n - 1)for (int j = i; j < s.size(); j += (2 * n -2)) {r += s[j];}   elsefor (int j = i,k = 2 * n - 2 - i; j < s.size() || k < s.size();j += (2 * n -2) , k += (2 * n -2)) {if(j < s.size()) r += s[j];if(k < s.size()) r += s[k];}}return r;}

两数之和

  • 这题很清晰,就是模拟两个数字的相加过程,需要注意的是,就是三个数相加,分别是节点1、节点2、还有addNum,有一个不为空,就继续往上加
    在这里插入图片描述
复习代码

注意

  • 创建一个临时头节点,方便操作
  • 操作指针,要判定当前指针是否为空
  • 指针记得向后移动
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {auto dummy = new ListNode(),cur = dummy;int addNum = 0;while(l1 || l2 || addNum){if(l1) addNum += l1->val ,l1 = l1->next;if(l2) addNum += l2->val ,l2 = l2->next;cur->next = new ListNode(addNum % 10);cur = cur->next;addNum = addNum / 10;}return dummy->next;}

新作

整数反转

在这里插入图片描述

个人实现
  • 因为int类型存储有限,所以想的是直接使用string类型的数据进行处理,就不用担心对应的超范围问题,然后使用stoi函数。同时超过范围的检测,也是使用string进行遍历检测。

不过,今天又是一遍过!

在这里插入图片描述

实现代码
 int reverse(int x){bool isPos = x < 0 ? false:true;string s = to_string(abs(x));std::reverse(s.begin(), s.end());// 判定反转后的数字是否超过范围string m = to_string((int)pow(2,31) - 1);if (s.size() == m.size()){for (int i = 0; i < m.size(); i ++) {if (s[i] > m[i] )   return 0;if (s[i] < m[i])  break;}}if (isPos)return stoi(s);elsereturn 0- stoi(s);}
参考做法
  • 通过求余10,来获取当前的位数,然后通过乘以10,来变成对应的数字

  • 如果不能存储超过范围的数字,那就通过因式变化实现。

  • 下述想法实现的确实比我的简洁很多,而且操作字符串,确实比操作数字要慢很多。
    • 字符串底层实现reverse的时间复杂度是,底层是通过反转迭代器来实现的,双指针同时遍历,所以时间复杂度是O(n),和这个算法差不多,只不过我有多遍历了一次判定是否越界。
    • 如果会溢出,就变换形态。
int reverse(int x){int r = 0;while (x){if (r > 0 && r > (INT_MAX - x % 10) / 10) return 0;if (r < 0 && r < (INT_MIN - x % 10) / 10) return 0;r = r * 10 + x % 10;x /= 10;}return r;
}
字符串转换整数

题目链接
在这里插入图片描述

个人解法
  • 单纯逐个遍历,然后根据不同的情况进行不同的操作,执行效果如下。逻辑比较松散,需要看看官方思路是怎么做的,会不会完整一点。
    在这里插入图片描述
class Solution {
public:int myAtoi(string s){bool numFlag = false,sigFlag = false;int r = 0 ,sig = 1;for (int i = 0; i < s.size(); ++i) {// 去除前导空格if (s[i] == ' ' &&  r == 0) {if(numFlag || sigFlag) break;continue;}// 判定是否是正负号if (s[i] == '-' &&  r == 0 && !sigFlag) {if (numFlag)    break;sigFlag = true;sig = -1;continue;}if (s[i] == '+' &&  r == 0 && !sigFlag) {if (numFlag)    break;sigFlag = true;sig = 1;continue;}// 跳过开头的零if (s[i] == '0' &&  r == 0)  {numFlag = true;continue;}// 获取数字if (s[i] <= '9' && s[i] >= '0')    {numFlag = true;// 需要判定是否会发生越界int num = s[i] - '0';if ( r > (INT_MAX - num) / 10){if (sig == 1) return INT_MAX;else return INT_MIN;                }r = r * 10 + num;}// 非数字,直接退出,并返回已经拼接成的数字else    break;// s}return r * sig;
}
};

分析总结

  • 时间来不及了,今天就不看官方参考了,明天要准备面试了!

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

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

相关文章

【日记】终于鼓起勇气买了吹风机!(356 字)

正文 好忙。今天比昨天还要忙&#xff0c;水都没喝几口。嗯&#xff0c;好像只喝了两口。 今天补了一份印鉴卡&#xff0c;销了一个户&#xff0c;变了一个户&#xff0c;弄了一大堆资料找人签字&#xff0c;还顺带要解决一个押品的历史遗留问题。 中午睡得好香&#xff0c;都不…

如何理解和使用 this 关键字

this 关键字是许多编程语言中的一个核心概念&#xff0c;在面向对象编程&#xff08;OOP&#xff09;中尤为重要。在JavaScript、Java、C、C#等语言中&#xff0c;this 扮演着至关重要的角色。理解 this 的意义和用法&#xff0c;对于编写清晰、有效的代码至关重要。 什么是th…

超分论文走读

codeFormer 原始动机 高度不确定性&#xff0c;模糊到高清&#xff0c;存在一对多的映射纹理细节丢失人脸身份信息丢失 模型实现 训练VQGAN 从而得到HQ码本空间作为本文的离散人脸先验。为了降低LQ-HQ映射之间的不确定性&#xff0c;我们设计尽量小的码本空间和尽量短的Code…

运营推广最容易被忽略的细节!用短链接推广必须要掌握这些要点!

短链接是目前很多企业进行网络推广最常用的方式之一&#xff0c;是引流转化的重要桥梁&#xff0c;很多工作者可能觉得用短链接推广&#xff0c;只需要简简单单的把生成好的短链接放上去就行&#xff0c;但是实际上有很多细节要点是需要着重注意的&#xff0c;今天小编就围绕这…

[AIGC] Nginx常用变量详解

Nginx非常强大&#xff0c;其主要功能包括HTTP服务器、反向代理、负载均衡等。Nginx的配置中有许多内置的变量&#xff0c;你可以在配置文件中使用这些变量进行灵活的配置。在本篇文章中&#xff0c;我们将介绍一些Nginx中常见的变量&#xff0c;包括proxy_add_header。 常见变…

redis显示RDB error

报错问题&#xff1a;"RDB error" 是指在Redis的RDB持久化过程中出现了错误。Redis的RDB持久化是通过将内存中的数据集快照保存到磁盘中的一种方式。如果在这个过程中遇到问题&#xff0c;Redis会记录一条包含"RDB error"的日志信息。上图错误&#xff0c;…

【论文复现】——基于随机抽样与特征值法的点云平面稳健拟合方法

目录 一、算法原理1、论文概述2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的GPT爬虫。 一、算法原理 1、论文概述 针对点云数据含有异常值且传统拟合方法拟合结果不理想的情况,本文提出…

FL Studio21.2.5中文版电子音乐制作的强大工具

在当今的数字音乐时代&#xff0c;电子音乐已经成为了全球音乐市场中不可或缺的一部分。越来越多的音乐爱好者开始尝试自己动手创作电子音乐&#xff0c;而FL Studio 21中文版正是为他们量身打造的一款强大工具。作为一个音频制作爱好者&#xff0c;我深知一个好的数字音频工作…

apexcharts数据可视化之雷达图

apexcharts数据可视化之雷达图 有完整配套的Python后端代码。 本教程主要会介绍如下图形绘制方式&#xff1a; 基础雷达图多组数据雷达图雷达图标记点 基础雷达图 import ApexChart from react-apexcharts;export function BasicRadar() {// 数据序列const series [{name…

10分钟掌握FL Studio21中文版,音乐制作更高效!

FL Studio 21中文版是Image Line公司推出的一款深受欢迎的数字音频工作站软件&#xff0c;在音乐制作领域享有盛誉。这个版本特别针对中文用户进行了本地化处理&#xff0c;旨在提供更加便捷的用户体验和操作界面。本次评测将深入探讨FL Studio 21中文版的功能特点、使用体验及…

【计算机网络】P1 计算机网络概念、组成、功能、分类、标准化工作以及性能评估指标

目录 1 什么是计算机网络2 计算机网络的组成2.1 组成部分上2.2 工作方式上2.3 功能组成上 3 计算机网络的功能3.1 数据通信3.2 资源共享3.3 分布式处理3.4 提高可靠性3.5 负载均衡 4 计算机网络的分类4.1 按分布范围分类4.2 按传输技术分类4.3 按照拓扑结构分类4.4 按使用者分类…

【FL Studio至尊版:音乐制作界的“瑞士军刀”】

​ 导语&#xff1a;在音乐制作领域&#xff0c;有一款软件被誉为“瑞士军刀”&#xff0c;它就是FL Studio。本文将为您揭示FL Studio的四大爆点&#xff0c;带您领略这款软件的独特魅力。 一、FL Studio&#xff1a;音乐制作界的“瑞士军刀” FL Studio&#xff0c;全称F…

Linux Tcpdump抓包入门

Linux Tcpdump抓包入门 一、Tcpdump简介 tcpdump 是一个在Linux系统上用于网络分析和抓包的强大工具。它能够捕获网络数据包并提供详细的分析信息&#xff0c;有助于网络管理员和开发人员诊断网络问题和监控网络流量。 安装部署 # 在Debian/Ubuntu上安装 sudo apt-get install…

Java网络编程:UDP通信篇

目录 UDP协议 Java中的UDP通信 DatagramSocket DatagramPacket UDP客户端-服务端代码实现 UDP协议 对于UDP协议&#xff0c;这里简单做一下介绍&#xff1a; 在TCP/IP协议簇中&#xff0c;用户数据报协议&#xff08;UDP&#xff09;是传输层的一个主要协议之一&#xf…

3.Spring Cloud LoadBalancer 入门与使用

3.Spring Cloud LoadBalancer 入门与使用 1.什么是 LoadBalancer?1.1负载均衡分类1.2 常见负载均衡策略 2.为什么要学 LoadBalancer?3.如何使用?4.默认负载均衡策略5.随机负载均策略5.1 创建随机负载均衡器5.2 设置随机负载均衡器 (局部设置)5.3 设置全局负载均衡器 6.Nacos…

基础—SQL—DML(数据操作语言)修改和删除

一、引言 接着上次博客&#xff0c;这次讲解DML语句中的修改数据和删除数据操作。 二、DML—修改数据 UPDATE 表名 SET 字段名1值1 ,字段名2值2 , ...[ WHERE 条件]; 注意&#xff1a;修改语句的条件可以有&#xff0c;也可以没有。如果没有条件&#xff0c;则会修改整张表的…

为什么就是不显示呢?

为了练习JavaScript中函数的使用方法&#xff0c;写了下面的关于Date&#xff08;&#xff09;函数的使用&#xff0c;奇怪的是&#xff0c;网页中就是不显示相关内容&#xff0c;为什么呢&#xff1f;&#xff1f;&#xff1f; <!DOCTYPE html> <html lang"en&…

【更新】一次“问题反馈”,下定决心做了多约束多目标智能算法的“模板”

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 关注该代码的同学应该清楚&#xff0c;这个代码已经免费更新了两版了&#xff0c;修复和增加了一些约束内容&#xff0c;本次增加蓄电池初始时刻和终止时刻容量一致约束&#xff0c;可别小瞧这么简单的增加约…

工控一体机10.1寸显示器电容触摸屏(YA05WK)产品规格说明书

如果您对工控一体机有任何疑问或需求&#xff0c;或者对如何集成工控一体机到您的业务感兴趣&#xff0c;可移步控芯捷科技。 一、硬件功能介绍 YA05WK是我公司推出的一款新型安卓屏&#xff0c;4核Cortex-A7 架构&#xff0c;主频1.2GHz的CPU。采用12V供电&#xff0c;标配5寸…

深入理解深度学习中的激活层:Sigmoid和Softmax作为非终结层的应用

深入理解深度学习中的激活层&#xff1a;Sigmoid和Softmax作为非终结层的应用Sigmoid 和 Softmax 激活函数简介Sigmoid函数Softmax函数 Sigmoid 和 Softmax 作为非终结层多任务学习特征变换增加网络的非线性实际案例 注意事项结论 深入理解深度学习中的激活层&#xff1a;Sigmo…