【Leetcode】2549. 统计桌面上的不同数字

2024-03-23 10:52

本文主要是介绍【Leetcode】2549. 统计桌面上的不同数字,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 题目
  • 思路
  • 代码
  • 复杂度分析
    • 时间复杂度
    • 空间复杂度
  • 结果
  • 总结

题目

题目链接🔗
给你一个正整数 n n n ,开始时,它放在桌面上。在 1 0 9 10^9 109 天内,每天都要执行下述步骤:

  • 对于出现在桌面上的每个数字 x ,找出符合 1 ≤ i ≤ n 1 \leq i \leq n 1in 且满足 x % i = = 1 x \% i == 1 x%i==1 的所有数字 i i i
  • 然后,将这些数字放在桌面上。

返回在 1 0 9 10^9 109 天之后,出现在桌面上的 不同 整数的数目。

注意:

  • 一旦数字放在桌面上,则会一直保留直到结束。
  • % 表示取余运算。例如, 14 % 3 14 \% 3 14%3 等于 2 2 2

示例 1
输入 n = 5 n = 5 n=5
输出 4 4 4
解释:最开始,5 在桌面上。
第二天, 2 2 2 4 4 4 也出现在桌面上,因为 5 % 2 = = 1 5 \% 2 == 1 5%2==1 5 % 4 = = 1 5 \% 4 == 1 5%4==1
再过一天 3 3 3 也出现在桌面上,因为 4 % 3 = = 1 4 \% 3 == 1 4%3==1
在十亿天结束时,桌面上的不同数字有 2 2 2 3 3 3 4 4 4 5 5 5

示例 2
输入 n = 3 n = 3 n=3
输出 2 2 2
解释
因为 3 % 2 = = 1 3 \% 2 == 1 3%2==1 2 2 2 也出现在桌面上。
在十亿天结束时,桌面上的不同数字只有两个: 2 2 2 3 3 3

提示

  • 1 ≤ n ≤ 100 1 \leq n \leq 100 1n100

思路

  • 第一天,桌面上只有一个数字 n n n,我们可以选择 i = n − 1 i=n-1 i=n1,因为 n % ( n − 1 ) = 1 n\%(n-1)=1 n%(n1)=1
  • 第二天,桌面上有两个数字 n n n n − 1 n-1 n1,我们可以选择 i = n − 2 i=n-2 i=n2,因为 ( n − 1 ) % ( n − 2 ) = 1 (n-1)\%(n-2)=1 (n1)%(n2)=1
  • ···
  • n − 2 n-2 n2天,桌面上有 n − 2 n-2 n2个数字 n n n n − 1 n-1 n1 ⋅ ⋅ ⋅ ··· ⋅⋅⋅ 3 3 3,我们可以选择 i = 2 i=2 i=2,因为 3 % 2 = 1 3\%2=1 3%2=1
  • n − 1 n-1 n1天,桌面上有 n − 1 n-1 n1个数字 n n n n − 1 n-1 n1 ⋅ ⋅ ⋅ ··· ⋅⋅⋅ 2 2 2,此时已经无法添加任何数字

·注意一开始就是 n = 1 n=1 n=1的话,桌面就会出现 1 1 1,总共一个数字;否则桌面上不会出现 1 1 1,总计 n − 1 n-1 n1个数字

代码

class Solution {
public:int distinctIntegers(int n) {return max(1,n-1);}
};

复杂度分析

时间复杂度

O(1)

空间复杂度

O(1)

结果

在这里插入图片描述

总结

数学结论题

这篇关于【Leetcode】2549. 统计桌面上的不同数字的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/838099

相关文章

哈希leetcode-1

目录 1前言 2.例题  2.1两数之和 2.2判断是否互为字符重排 2.3存在重复元素1 2.4存在重复元素2 2.5字母异位词分组 1前言 哈希表主要是适合于快速查找某个元素(O(1)) 当我们要频繁的查找某个元素,第一哈希表O(1),第二,二分O(log n) 一般可以分为语言自带的容器哈希和用数组模拟的简易哈希。 最简单的比如数组模拟字符存储,只要开26个c

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

hdu1496(用hash思想统计数目)

作为一个刚学hash的孩子,感觉这道题目很不错,灵活的运用的数组的下标。 解题步骤:如果用常规方法解,那么时间复杂度为O(n^4),肯定会超时,然后参考了网上的解题方法,将等式分成两个部分,a*x1^2+b*x2^2和c*x3^2+d*x4^2, 各自作为数组的下标,如果两部分相加为0,则满足等式; 代码如下: #include<iostream>#include<algorithm

2. c#从不同cs的文件调用函数

1.文件目录如下: 2. Program.cs文件的主函数如下 using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;namespace datasAnalysis{internal static

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

leetcode-24Swap Nodes in Pairs

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode swapPairs(L

leetcode-23Merge k Sorted Lists

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode mergeKLists

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0