Python每日一练(20230301)

news2025/1/13 10:14:32

目录

1. 只出现一次的数字

2. 以特殊格式处理连续增加的数字

3. 最短回文串


1. 只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

输入: [2,2,1]
输出: 1

示例 2:

输入: [4,1,2,1,2]
输出: 4
class Solution:
    def singleNumber(self, nums: list) -> int:
        nums = sorted(nums)
        i = 0
        while i < len(nums) - 1:
            if nums[i] == nums[i + 1]:
                i += 2
            else:
                return nums[i]
        return nums[i]

if __name__ == '__main__':
    s = Solution()
    print(s.singleNumber([2,2,1]))
    print(s.singleNumber([4,1,2,1,2]))

输出:

1
4


2. 以特殊格式处理连续增加的数字

给出一串数字, 程序要把数字按照这样的格式输出,把连续增加的数字用 [x-y] 的形式表示,只显示这一组顺序数字的首位两个数字,不连续增加的数字单独列出。

示例 :

输入: 1, 2, 3, 4, 5, 8, 10, 11, 12, 13, 20, 21, 22
输出: 
[1-5] 
[8] 
[10-13] 
[20-22]
seq = list(map(int, input().split(',')))
tmp = [seq[0]]
all_list = []
for n in range(len(seq)):
    if n == len(seq) - 1:
        all_list.append(tmp)
        break
    if seq[n + 1] - seq[n] == 1:
        tmp.append(seq[n + 1])
    else:
        all_list.append(tmp)
        tmp = [seq[n + 1]]
for a in all_list:
    if len(a) > 1:
        print('[%s-%s]' % (a[0], a[-1]))
    else:
        print('[%s]' % a[0])

输入输出:

1, 2, 3, 4, 5, 8, 10, 11, 12, 13, 20, 21, 22
[1-5]
[8]
[10-13]
[20-22]


3. 最短回文串

给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。

示例 1:

输入:s = "aacecaaa"
输出:"aaacecaaa"

示例 2:

输入:s = "abcd"
输出:"dcbabcd"

提示:

  • 0 <= s.length <= 5 * 104
  • s 仅由小写英文字母组成
class Solution:
  def shortestPalindrome(self, s: str) -> str:
    N = len(s)
    idx1 = 0
    for idx2 in range(N - 1, -1, -1):
      if s[idx1] == s[idx2]:
        idx1 += 1
    if idx1 == N:
      return s
    return s[idx1:][::-1] + self.shortestPalindrome(s[:idx1]) + s[idx1:]

if __name__ == '__main__':
    s = Solution()
    print(s.shortestPalindrome("aacecaaa"))
    print(s.shortestPalindrome("abcd"))

输出:

aaacecaaa
dcbabcd


附录

排列与组合

是组合学最基本的概念。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。

基本原理

⑴加法原理和分类计数法

⒈加法原理:做一件事,完成它可以有n类办法,在第一类办法中有m1种不同的方法,在第二类办法中有m2种不同的方法,……,在第n类办法中有mn种不同的方法,那么完成这件事共有N=m1+m2+m3+…+mn种不同方法。

⒉第一类办法的方法属于集合A1,第二类办法的方法属于集合A2,……,第n类办法的方法属于集合An,那么完成这件事的方法属于集合A1UA2U…UAn。

⒊分类的要求 :每一类中的每一种方法都可以独立地完成此任务;两类不同办法中的具体方法,互不相同(即分类不重);完成此任务的任何一种方法,都属于某一类(即分类不漏)。

⑵乘法原理和分步计数法

⒈ 乘法原理:
做一件事,完成它需要分成n个步骤,做第一步有m1种不同的方法,做第二步有m2种不同的方法,……,做第n步有mn种不同的方法,那么完成这件事共有N=m1×m2×m3×…×mn种不同的方法。

⒉合理分步的要求
任何一步的一种方法都不能完成此任务,必须且只须连续完成这n步才能完成此任务;各步计数相互独立;只要有一步中所采取的方法不同,则对应的完成此事的方法也不同。

3.与后来的离散型随机变量也有密切相关。

著名问题

计算一些物品在特定条件下分组的方法数目。这些是关于排列、组合和整数分拆的。

地图着色问题

对世界地图着色,每一个国家使用一种颜色。如果要求相邻国家的颜色相异,是否总共只需四种颜色?这是图论的问题。

船夫过河问题

船夫要把一匹狼、一只羊和一棵白菜运过河。只要船夫不在场,羊就会吃白菜、狼就会吃羊。船夫的船每次只能运送一种东西。怎样把所有东西都运过河?这是线性规划的问题。

中国邮差问题

由中国组合数学家管梅谷教授提出。邮递员要穿过城市的每一条路至少一次,怎样行走走过的路程最短?这不是一个NP完全问题,存在多项式复杂度算法:先求出度为奇数的点,用匹配算法算出这些点间的连接方式,然后再用欧拉路径算法求解。这也是图论的问题。

任务分配问题

有一些员工要完成一些任务。各个员工完成不同任务所花费的时间都不同。每个员工只分配一项任务。每项任务只被分配给一个员工。怎样分配员工与任务以使所花费的时间最少?这是线性规划的问题。

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

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

相关文章

「TCG 规范解读」基础设施架构和协议 (2)

可信计算组织&#xff08;Ttrusted Computing Group,TCG&#xff09;是一个非盈利的工业标准组织&#xff0c;它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立&#xff0c;并采纳了由可信计算平台联盟&#xff08;the Trusted Computing Platform Alli…

有什么好用的在线统计表单吗?

有什么好用的在线统计表单吗&#xff1f;最好是免费的&#xff1f;市面上这样的表单工具其实很多&#xff0c;先来看看题主的需求&#xff1a; 收集信息&#xff0c;数据统计数据分析&#xff0c;报表展示 以简道云在线表单为例&#xff0c;能完美实现题主这两个需求—— http…

携程面经1

面经 HDFS读写流程 1.读流程 客户端向NameNode发起读请求&#xff08;如果存在&#xff09;NameNode返回一批block地址客户端与第一个block的拓扑距离最近的节点建立连接以packet&#xff08;64kb&#xff09;的单位读取数据块。一个block读取完成后客户端会断开与该DataNod…

算法训练营 day59 动态规划 两个字符串的删除操作 编辑距离

算法训练营 day59 动态规划 两个字符串的删除操作 编辑距离 两个字符串的删除操作 583. 两个字符串的删除操作 - 力扣&#xff08;LeetCode&#xff09; 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符…

DBeaver连接mysql数据库图文教程

文章目录前言一、DBeaver连接mysql数据库二、文档下载地址前言 DBeaver是免费、开源、通用数据库工具&#xff0c;是许多开发开发人员和数据库管理员的所选。下面详细介绍Dbeaver连接mysql数据库的过程。 一、DBeaver连接mysql数据库 1、 打开Dbeaver后&#xff0c;按下图操…

【Unity】P4 脚本文件(基础)

Unity脚本文件&#xff08;基础&#xff09;适配的C#代码编辑器如何添加一个脚本文件获取蘑菇当前位置基础代码改变物体位置帧与帧更新前言 上一篇博文主要围绕Unity Inspector部分&#xff0c;围绕组件&#xff0c;资源文件&#xff0c;父子节点部分做介绍。 链接&#xff1a;…

阿里黑客入门学习资料流出来了!!

各位粉丝朋友大家好&#xff0c;最近看到很多粉丝朋友给我留言&#xff0c;希望我给大家找一些学习内容。前段时间整理了我平时常看的一些黑客相关的技术书籍&#xff0c;这些内容从未对外公开&#xff0c;今天分享给大家 &#xff01; 内容非常详细且全面&#xff0c;覆盖了W…

5分钟轻松拿下Java枚举

文章目录一、枚举(Enum)1.1 枚举概述1.2 定义枚举类型1.2.1 静态常量案例1.2.2 枚举案例1.2.3 枚举与switch1.3 枚举的用法1.3.1 枚举类的成员1.3.2 枚举类的构造方法1&#xff09;枚举的无参构造方法2&#xff09;枚举的有参构造方法1.3.3 枚举中的抽象方法1.4 Enum 类1.4.1 E…

c++系列12:使用vscode进行编译

1. 入门 1.1 操作方法 1&#xff09;下载安装vscode 2&#xff09;在扩展中搜索c/c extension pack并安装&#xff08;或者直接打开cpp文件&#xff0c;会自动提示进行安装&#xff09; 3&#xff09;创建项目目录&#xff0c;会自动生成.vscode文件夹&#xff0c;里面是编译…

虹科分享 | Domo零售行业商业智能白皮书:《从零售企业的数据中获取价值》

市场因素、技术创新和不断增长的客户期望&#xff0c;给电子商务带来了新的机遇&#xff0c;与此同时也给传统零售行业带来了压力。零售业正面临着新的挑战&#xff1a;不断变化的需求模式和渠道、不断变化的服务期望、复杂的库存以及交付问题。为了解决这些问题&#xff0c;零…

Linux系统介绍及熟悉Linux基础操作

一、什么是Liunx Linux&#xff0c;全称GNU/Linux&#xff0c;是一种免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本纳第克特托瓦兹&#xff08;Linus Benedict Torvalds&#xff09;于1991年10月5日首次发布&#xff0c;它主要受到Minix和Unix思想的启发&am…

机器学习知识总结 —— 21. 什么是主成分分析

文章目录什么是PCA&#xff08;Principal Component Analysis&#xff09;协方差矩阵什么是协方差协方差矩阵特征值与特征向量PCA降维什么是PCA&#xff08;Principal Component Analysis&#xff09; 在机器学习中&#xff0c;PCA&#xff08;Principal Component Analysis&a…

除了Confluence,还有哪些好用的文档管理软件?测评

在早期&#xff0c;文档管理软件主要是为了将企业内部海量的电子文档集中存储、管理&#xff0c;通过设置共享权限进行内部员工的文档分发&#xff0c;有些甚至可能要提供API接口&#xff0c;便于将ERP、OA等系统的文档纳入其中&#xff0c;形成企业文档管理中心。而随着时间的…

window下的快捷程序链怎么设置环境变量|cmd直接运行快捷方式

对于需要在命令行执行的程序&#xff0c;每次都需要设置环境变量很是麻烦&#xff0c;而且也会导致非必要的文件也在环境变量里并且如果多版本共存软件也会导致只能一个存在环境变量里不然会冲突&#xff0c;这时候如果可以通过快捷方式那不就完美解决了么&#xff1f; 快捷方…

一文带你入门Docker

目录一、什么是Docker&#xff1f;1、背景2、Docker三要素3、Docker四个组成部分二、Docker安装步骤1、VM虚拟机下载2、centrOS 8下载3、安装docker4、配置阿里云镜像加速器5、docker run 执行顺序6、docker和虚拟机比较三、docker常用命令四、docker镜像分层一、什么是Docker&…

运维语言、bash特性、history命令

P4 浅谈运维和编程语言 shell简述 shell C语言开发&#xff0c;和同是C开发的操作系统更兼容。因此shell效率肯定大于其他工具。 shell语言类型 其他运维语言 shell优势 P5 Bash特性 bash是什么 命令历史 -c 清楚存放的历史命令 -r 回复删除的历史命令 &#xff01;历史id…

0基础怎么入门黑客?

" 有一群人大声嚷嚷着自己是黑客&#xff0c;但他们不是。他们&#xff08;主要是正值青春的少年&#xff09;是一些蓄意破坏计算机和电话系统的人。真正的黑客把这些人叫做“骇客”(cracker)&#xff0c;并不屑与之为伍。多数真正的黑客认为骇客们又懒又不负责任&#x…

FCN学习

简介 FCN是首个端对端的针对像素级别预测的全卷积网络&#xff0c;发表在2015CVPR。全卷积的意思是全连接层全部替换成了卷积层。 FCN的评价指标 FCN的评价指标主要采用Mean IOU&#xff0c;他在当时已经超过了大多数网络的Mean IOU。 全卷积的优势 通过观察我们能够发现&am…

山东大学数字图像处理实验:MATLAB的图像显示方法

文章目录MATLAB 学习实验目的实验原理及方法实验内容MATLAB的图像显示方法实验目的实验内容MATLAB 学习 实验目的 了解 MATLAB 的基本功能及操作方法。掌握典型离散信号的 Matlab 产生和显示。 实验原理及方法 在 MATLAB 中, 序列是用矩阵向量表示, 但它没有包含采样信息, …

程序,进程,线程 并行,并发

程序&#xff1a; 程序的本质是初始的数据加一些指令&#xff0c;是数据跟指令的集合&#xff0c;是有序代码的集 合。程序的指令在代码里面相当于一个函数&#xff0c;调用一个函数相当于向程序发出一条指令&#xff0c;数据就是一些变量&#xff0c;变量就是用来保存数据的。…