【优选算法题练习】day1

news2024/9/21 22:43:16

文章目录

  • 一、283. 移动零
    • 1.题目简介
    • 2.解题思路
    • 3.代码
    • 4.运行结果
  • 二、1089. 复写零
    • 1.题目简介
    • 2.解题思路
    • 3.代码
    • 4.运行结果
  • 三、202. 快乐数
    • 1.题目简介
    • 2.解题思路
    • 3.代码
    • 4.运行结果
  • 总结


双指针:

一、283. 移动零

1.题目简介

283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
在这里插入图片描述

2.解题思路

3.代码

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int cur = 0, prev = -1;//cur是0区间后的第一个非0,prev是0区间前的最后一个非0
        while(cur < nums.size())
        {
            if(nums[cur])
            {
                swap(nums[++prev], nums[cur]);
            }
            cur++;
        }
    }
};

4.运行结果

在这里插入图片描述

二、1089. 复写零

1.题目简介

1089. 复写零
给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。
注意:请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。
在这里插入图片描述

2.解题思路

3.代码

class Solution {
public:
    void duplicateZeros(vector<int>& arr) {
        int prev = -1, cur = 0, n = arr.size();//双指针,找到修改后数组的最后一个元素
        while(cur < n)
        {
            if(arr[cur] != 0)
            {
                prev++;
            }
            else
            {
                prev += 2;
            }
            if(prev >= n - 1) break;//prev已经到终止位置
            cur++;
        }
        //处理边界(如果prev超出数组边界2个位置,说明cur判断的最后一个元素是0,因为数组的空间有限,cur最后遍历到的0无法进行复制,因此我们要对这种情况进行修复,即将数组最后一个元素修改为0(直接后移不进行复制)。然后让cur退一步,prev退两步,再进行向后移动元素的操作即可)
        if(prev == n)
        {
            arr[n - 1] = 0;
            cur--;
            prev -= 2;
        }
        //从最后一个元素开始从后往前移动,遇到0就往后填充两个0.
        while(cur >= 0)
        {
            if(arr[cur] == 0)
            {
                arr[prev--] = 0;
                arr[prev--] = 0;
                cur--;
            }
            else
            {
                arr[prev--] = arr[cur--];
            }
        }
    }
};

4.运行结果

在这里插入图片描述

三、202. 快乐数

1.题目简介

202. 快乐数
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」 定义为:
对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true ;不是,则返回 false 。
在这里插入图片描述

2.解题思路

3.代码

class Solution {
public:
    int bitsum(int n)
    {
        int ret = 0;
        while(n)
        {
            int t = n%10;
            ret += t * t;
            n /= 10;
        }
        return ret;
    }
    bool isHappy(int n) {
        int slow = n, fast = bitsum(n);
        while(slow != fast)
        {
            slow = bitsum(slow);
            fast = bitsum(bitsum(fast));
        }
        return slow == 1;
    }
};

4.运行结果

在这里插入图片描述


总结

今天是算法练习的第1天。
绳锯木断,水滴石穿,继续加油。
来源:力扣(LeetCode),著作权归领扣网络所有。
如果本篇文章对你有所启发的话,希望可以多多支持作者,谢谢大家!

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

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

相关文章

vscode: Unable to determine workspace folder

故障现象&#xff1a; 用vscode的bashdb调试bash 脚本时&#xff0c;出现如下打印&#xff1a; 故障原因&#xff1a; setttings.json中&#xff0c;“cwd”定义目录错误&#xff0c;或者缺少“cwd”定义&#xff1b; 解决办法&#xff1a; 打开settings.json文件&#xff…

SpringBoot+Vue 的在线考试系统

&#x1f495;&#x1f495;作者&#xff1a;程序员徐师兄 个人简介&#xff1a;7 年大厂程序员经历&#xff0c;擅长Java、微信小程序、Python、Android等&#xff0c;大家有这一块的问题可以一起交流&#xff01; 各类成品java毕设 。javaweb&#xff0c;ssh&#xff0c;ssm&…

Python环境搭建秘籍:开发者的黄金组合!

1、vscode下载并安装。 Visual Studio Code - Code Editing. Redefined 2、安装插件。 在vscode中按ctrlshiftx快捷键打开extension的界面。 输入python关键字&#xff0c;注意选择Micorosoft的。 3、创建python代码。 C:\pythoncode\weather.py import wx import request…

tidb之旅——dm工具篇

作者&#xff1a; 有猫万事足 原文来源&#xff1a; https://tidb.net/blog/666ab16d 前言 稳定了tidb的集群&#xff0c;确定了写入热点问题的处理方式&#xff0c;搞好了监控&#xff0c;就要准备接入生产服的写入流量进入tidb集群了。这就轮到了dm工具的出场。这个过程十…

视频行为识别(一)——综述

Deep Neural Networks in Video Human Action Recognition: A Review 本次分享的文章是2023年收录在计算机视觉领域的顶刊“CVPR”&#xff08;级别&#xff1a;视觉类TOP&#xff09;期刊上。该期刊详细信息可关注公众号 AI八倍镜 点击菜单项查询。 论文地址&#xff1a;http…

减法优化器SABO算法优化VMD参数,最小包络熵、样本熵、信息熵、排列熵(适应度函数可自行选择,一键修改)包含MATLAB源代码...

今天给大家带来一期由2023年智能优化算法减法优化器SABO优化VMD的两个参数。关于减法优化器SABO的原理及MATLAB代码的详细介绍大家可以看这篇文章。2023年优化算法之减法平均优化器&#xff0c;matlab代码直接复制&#xff0c;并与灰狼&#xff0c;粒子群算法比较 同样以西储大…

IL、BC、IRL、GAIL、RL差点给我搞懵逼了,整理一下

(308条消息) 模仿学习&#xff1a;逆向强化学习(Inverse Reinforcement Learning&#xff0c; IRL)_UQI-LIUWJ的博客-CSDN博客 //这个把IRL讲的比较大白话&#xff0c;相对好解释 &#xff0c;讲的确实好 强化学习逆强化学习简单总结_哔哩哔哩_bilibili//这个妹子也讲的很不错…

计算机体系结构基础知识介绍之指令级并行性:概念和挑战

一、相关概念 自 1985 年以来&#xff0c;所有处理器都使用流水线来重叠指令的执行并提高性能。 指令之间的这种潜在重叠称为指令级并行性&#xff08;ILP&#xff09;。 具体来说&#xff1a;流水线和指令级并行是两个相关的概念。 流水线是一种将每条指令分解为多个阶段&am…

阿里云域名注册域名持有者信息模板创建流程(图文)

阿里云域名注册域名持有者个人或企业都需要有已经通过实名认证的信息模板&#xff0c;如果没有可用的信息模板&#xff0c;需要先创建信息模版&#xff0c;等待信息模板实名通过后才可以注册域名&#xff0c;阿里云百科来详细说下阿里云注册域名创建信息模板实名全过程&#xf…

Python源文件改写

题目 Python源文件改写。编写一个程序&#xff0c;读取一个Python源程序文件source.py&#xff0c;将文件中所有除保留字外的小写字母换成大写字母。 代码 import keyword import jieba from tkinter import filedialogf_path filedialog.askopenfilename() keywords keyw…

VUE根据图片做图片形状的图云效果

VUE根据图片形状制作词云效果 爱心图片&#xff1a;&#xff08;是白底的png&#xff09; 效果图&#xff1a; 盾牌图片&#xff1a; 效果图&#xff1a; 使用 echarts-wordcloud npm install echarts npm install echarts-wordcloud代码&#xff1a; <template><di…

C++常用库函数 7.字符串操作函数

函数名&#xff1a;strcat 函数原型&#xff1a;char *strcat(char*strDestination&#xff0c;const char *strSource)&#xff1b; 参数&#xff1a;strDestination 以空字符结尾的目的字符串 strSource 以空字符结尾的源字符串。 所需头文件&#xff1a;<cstring> …

spring 详解二 IOC(Bean xml配置及DI)

配置列表 Xml配置 功能描述 <bean id"" class""></bean> Bean的id&#xff0c;配置id会转为Bean名称和不配就是全限定类名 <bean name"" ></bean> Bean的别名配置&#xff0c;存储在Factory的aliasMap中通过别名也…

Springboot请求映射原理

1、重点关注DispatcherServlet.class&#xff08;前端控制器&#xff09; 所有的请求在Springmvc中都经过DispatcherServlet.class进行处理 展开DispatcherServlet.class的机构树&#xff0c; 发现dispatcherServlet也是继承了httpServlet,那么只要事servlet就要重写doget、do…

[CISCN 2019华北Day2]Web1

[CISCN 2019华北Day2]Web1 开题一眼SQL 抓个包&#xff0c;发现是POST注入 试了一下&#xff0c;过滤了空格&#xff0c;用括号绕过&#xff0c;是个盲注 直接贴个脚本 import requests import timeurl "http://node2.anna.nssctf.cn:28326/index.php" payload …

Spring复习: (5) DefaultBeanDefinitionDocumentReader和BeanDefinitionParserDelegate

DefaultBeanDefinitionDocumentReader和BeanDefinitionParserDelegate 这两个类里定义了大量的静态变量&#xff0c;这些变量用来在xml配置文件中使用

C语言 常用库函数-表

文章目录 一、数学函数二、字符函数三、字符串函数四、输入输出函数五、动态分配函数和随机函数 一、数学函数 调用数学函数时&#xff0c;要求在源文件中包下以下命令行&#xff1a; #include <math.h> 二、字符函数 调用字符函数时&#xff0c;要求在源文件中包下以…

windows系统查看程序安装位置

查询命令 where sqlcmd是查询sqlcmd安装在什么位置 where cmd 是查询cmd安装在什么位置 where sqlcmd where cmd 使用方法 winr快捷键&#xff0c;输入cmd&#xff0c;点击确认 输入查询命令 &#xff0c;可以看到程序所在的路径

Kubernetes —Pod 和容器日志

日志架构 应用日志可以让你了解应用内部的运行状况。日志对调试问题和监控集群活动非常有用。 大部分现代化应用都有某种日志记录机制。同样地&#xff0c;容器引擎也被设计成支持日志记录。 针对容器化应用&#xff0c;最简单且最广泛采用的日志记录方式就是写入标准输出和标…

【JavaEE】前后端综合项目-博客系统(下)

【JavaEE】前后端综合项目-博客系统&#xff08;下&#xff09; 文章目录 【JavaEE】前后端综合项目-博客系统&#xff08;下&#xff09;1. 博客登录页1.1 用户名密码校验1.1.1 约定前后端交互接口1.1.2 后端代码1.1.3 前端代码 1.2 登录信息记忆功能1.2.1 约定前后端交互接口…