秋招突击——算法打卡——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];
                }   
            else
                for (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);
        else
            return 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.mfbz.cn/a/678267.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【创业新趋势】萤瓴优选,抓住2024年造富新机遇!

​在当下这个充满变革与机遇的时代&#xff0c;创业者们纷纷寻找着下一个造富的新风口。而2024年&#xff0c;一个备受瞩目的创业新星正在冉冉升起——萤瓴优选。这款短视频变现任务App以其独特的 keJ0277 商业模式和创新理念&#xff0c;正引领着创业新趋势&#xff0c;成为众…

java多线程初探

文章目录 countDownLatchvolatileCASjdk1.6对synchronized的优化自旋锁锁消除锁粗化轻量级锁偏向锁 java AtomicBoolean compareAndSet Demothreadlocalconcurrent queue原子操作是否需要同步copyonwrite容器可重入锁公平与非公平并发编程步骤 countDownLatch 此类位于java.ut…

python入门2

文章目录 前言一、集合与字典1、集合2、字典3、字典内置方法4、内置数据结构总结 二、控制流程1、结构流程概述2、分支结构3、循环结构 总结 前言 本文将介绍Python中的集合与字典以及控制流程。集合是一种无序且不重复的数据类型&#xff0c;它可以用于存储一组元素&#xff…

echarts多X轴, 多Y轴

需要的效果 原始数据 props.monitorData:{"lst_monitor_flow": ["152.68","207.64","103.82","21.21","33.81","40.71","273.80","208.66","104.33","15.80"…

如何在vs code中安装JavaFX

目录 下载JavaFX 配置vs code工程 编写测试代码 下载JavaFX 网站链接:https://openjfx.io 选择如下的版本

傲医医疗集成引擎 Rhapsody 在超融合信创平台表现如何?

作者&#xff1a;SmartX 商业团队 黄玉辉 随着越来越多的医疗用户基于超融合基础设施实现 IT 基础架构信创转型&#xff0c;超融合信创架构在医疗业务场景中的实际表现也得到更多关注。尤其是集成平台业务场景——作为三甲医院互联互通评级中不可缺少的核心业务系统&#xff0…

指针的认识(传值调用和传地址调用)

学习指针的目的是使用指针解决问题&#xff0c;那什么问题&#xff0c;非指针不可呢&#xff1f; 当要求写个函数来交换两个变量的值时&#xff0c;我们稍加思索&#xff0c;可以写成如下函数&#xff1a; void Swap1(int x, int y) {int tmp x;x y;y tmp; } 那么我们来进…

HBuilderX编写APP二、获取数据代码以及如何打包发行app

<template><!-- 修改APP名字的地方在pages.json文件里面 --><!-- <view class"content"><view class"">温度{{temp}} ℃ </view> //添加温度显示<view class"">湿度{{humi}} % </view> //添加湿度…

“OZON售后管理:加速处理流程,优化顾客售后体验“

在跨境电商领域欣欣向荣的发展浪潮中&#xff0c;退货及其它售后问题成为了许多卖家心头的一大困扰。为了解决卖家在处理退货售后时所面临的问题&#xff0c;无忧易售ERP上线了专为Ozon平台设计的退货规则&#xff0c;旨在帮助卖家们更好的优化售后服务、提升运营效率。 无忧易…

支付通道接口被脚本刷,如何解决

在数字交易日益频繁的今天&#xff0c;支付通道接口的安全性成为商家和平台不容忽视的问题。当支付接口被脚本恶意刷单时&#xff0c;不仅会导致财务损失&#xff0c;还可能引发合规风险和客户信任危机。本文将探讨支付接口被脚本刷单的原因、识别方法、应急处理方案&#xff0…

弘君资本:如何洞察先机?前瞻性指标揭秘新一轮船舶周期

多项目标共同提醒船只上行周期的到来。本文将以我国船只为例&#xff0c;综合剖析这一强周期职业的发展趋势。 复盘全球造船周期&#xff0c;可以看出均匀全球造船周期约为9.6年&#xff1b;在1886—2007年期间&#xff0c;有12个独立的周期&#xff0c;周期均匀长度约为9.6年…

YOLOv10环境搭建推理测试

引子 两个多月前YOLOv9发布&#xff08;感兴趣的童鞋可以移步YOLOv9环境搭建&推理测试_yolov9安装-CSDN博客&#xff09;&#xff0c;这才过去这么短的时间&#xff0c;YOLOv10就横空出世了。现在YOLO系列搞得就和追剧一样了。。。OK&#xff0c;那就让我们开始吧。 一、…

记一次 .NET某质量检测中心系统 崩溃分析

一&#xff1a;背景 1. 讲故事 这些天有点意思&#xff0c;遇到的几个程序故障都是和Windows操作系统或者第三方组件有关系&#xff0c;真的有点无语&#xff0c;今天就带给大家一例 IIS 相关的与大家分享&#xff0c;这是一家国企的.NET程序&#xff0c;出现了崩溃急需分析。…

年中企业业绩管理新篇章:用友BIP收入云助力高效管理!

随着市场竞争的加剧&#xff0c;年中时刻对于企业而言&#xff0c;不仅是评估上半年业绩的节点&#xff0c;更是调整策略、确保全年目标达成的关键时期。高效的业绩管理不仅需要明确的目标设定和计划制定&#xff0c;更需要借助先进的信息技术工具来提升管理效率和决策质量。在…

LES大涡模拟基础

参考自https://www.bilibili.com/video/BV1EL411A7gu?p30&vd_sourceb624b9d3e49866ce8c6a455f1ab7c03f 如何解析涡 用网格不能解析单元尺度以下的涡&#xff08;小涡&#xff09;而只能解析大涡 对于小涡&#xff0c;需要引入亚格子模型 如何选择合适的网格尺寸&…

智能充电模式,治好了我多年的充电焦虑

我是一个有严重电量焦虑的人&#xff0c;而且我发现我周围很多人都是。比如说&#xff0c;我晚上习惯把手机插上充电器&#xff0c;然后就放一边不管了&#xff0c;这样第二天出门才能100%满电&#xff1b;还有啊&#xff0c;有时候我在办公室一坐就是好几个小时&#xff0c;手…

一键式AI智能知识库-谈如何打造人性化的LLM RAG知识库的重要性

RAG系统简介 在现代的LLM RAG&#xff08;Retrieval-Augmented Generation&#xff09;系统中&#xff0c;数据流的设计至关重要。让我们通过一个具体的例子来详细描述一个标准RAG系统的数据流。 首先&#xff0c;用户可以通过多种应用入口访问系统&#xff0c;包括PC应用、微…

实用新型专利申请材料的撰写与准备

在科技创新日益活跃的今天&#xff0c;实用新型专利的申请与保护显得尤为重要。实用新型专利作为一种重要的知识产权形式&#xff0c;对于推动科技进步、促进经济发展具有重要意义。 首先我们需要明确实用新型专利的定义。实用新型专利是指对产品的形状、构造或者其结合所提出…

用实力说话!深度解析蓝海创意云渲染“不排队”背后的秘密

蓝海创意云渲染农场https://www.vsochina.com/cn/render蓝海创意云渲染农场曾为《流浪地球2》、《长津湖》、《独行月球》、《斗破苍穹年番》、《巴霍巴利王2》等知名影视动漫作品提供云渲染服务。这些渲染案例充分证明了蓝海创意渲染深厚的技术底蕴和强大的渲染实力。那么&…

【权威出版/投稿优惠】2024年机器视觉与自动化技术国际会议(MVAT 2024)

2024 International Conference on Machine Vision and Automation Technology 2024年机器视觉与自动化技术国际会议 【会议信息】 会议简称&#xff1a;MVAT 2024截稿时间&#xff1a;(以官网为准&#xff09;大会地点&#xff1a;中国重庆会议官网&#xff1a;www.icmvat.co…