Python|每日一练|排序|递归|链表|字符串|数组|动态规划|哈希表|单选记录:K 个一组翻转链表|括号生成|无重复字符的最长子串

news2024/11/19 1:46:20

1、K 个一组翻转链表(递归,链表)

给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。

是一个正整数,它的值小于或等于链表的长度。

如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

进阶:

  • 你可以设计一个只使用常数额外空间的算法来解决此问题吗?
  • 你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

 

示例 1

https://img-service.csdnimg.cn/img_convert/73746d9eacbf48526f3aa7f3051d929a.jpeg

输入:head = [1,2,3,4,5], k = 2
输出:[2,1,4,3,5]

示例 2

https://img-service.csdnimg.cn/img_convert/202a5b66c99b0dba832f105fae9a47ce.jpeg

输入:head = [1,2,3,4,5], k = 3
输出:[3,2,1,4,5]

示例 3

输入:head = [1,2,3,4,5], k = 1
输出:[1,2,3,4,5]

示例 4

输入:head = [1], k = 1
输出:[1]

提示:

  • 列表中节点的数量在范围 sz 
  • 1 <= sz <= 5000
  • 0 <= Node.val <= 1000
  • 1 <= k <= sz

以下程序实现了这一功能,请你填补空白处内容:

class ListNode(object):
	def __init__(self, x):
		self.val = x
		self.next = None
class LinkList:
	def __init__(self):
		self.head=None
	def initList(self, data):
		self.head = ListNode(data[0])
		r=self.head
		p = self.head
		for i in data[1:]:
			node = ListNode(i)
			p.next = node
			p = p.next
		return r
	def	convert_list(self,head):
		ret = []
		if head == None:
			return
		node = head
		while node != None:
			ret.append(node.val)
			node = node.next
		return ret
class Solution(object):
	def reverseKGroup(self, head, k):
		if head is None:
			return None
		index = 0
		lead, last = 0, 0
		pos = head
		temp = ListNode(-1)
		temp.next = head
		head = temp
		start = head
		_________________;
		return head.next
	def reverseList(self, head, end):
		pos = head.next
		last = end
		next_start = pos
		while pos != end:
			head.next = pos
			last_pos = pos
			pos = pos.next
			last_pos.next = last
			last = last_pos
		return next_start
# %%
l = LinkList()
head = [1,2,3,4, 5]
l1 = l.initList(head)
s = Solution()
print(l.convert_list(s.reverseKGroup(l1, k = 2)))

选项代码:

while pos is not None:
    if index % k == k - 1:
        last = pos.next
        start = self.reverseList(start, last)
        pos = start
    pos = pos.next
    index += 1

2、括号生成(字符串,动态规划)

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

 

示例 1

输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]

示例 2

输入:n = 1
输出:["()"]

 

提示:

  • 1 <= n <= 8

选项代码:

from typing import List
class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        def gen(p, lc, rc, r, n):
            if lc > n:
                return
            if lc == n and rc == n:
                r.append(''.join(p))
            p.append('(')
            lc += 1
            gen(p, lc, rc, r, n)
            p.pop()
            lc -= 1
            if lc > rc:
                p.append(')')
                rc += 1
                gen(p, lc, rc, r, n)
                p.pop()
                rc -= 1
        results = []
        gen([], 0, 0, results, n)
        return results
# %%
s = Solution()
print(s.generateParenthesis(n = 3))

3、无重复字符的最长子串(哈希表,字符串)

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3

示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1

示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3 

请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

示例 4:

输入: s = ""
输出: 0

 

提示:

  • 0 <= s.length <= 5 * 104
  • s 由英文字母、数字、符号和空格组成

选项代码:

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        i = 0
        j = 0
        m = 0
        hset = {}
        while j < len(s):
            char = s[j]
            index = hset.get(char)
            if index is not None and index > i:
                i = index
            m = m if m > j - i + 1 else j - i + 1
            hset[char] = j + 1
            j += 1
        return m
# %%
s = Solution()
print(s.lengthOfLongestSubstring('abcabcbb'))

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

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

相关文章

kafka安装及使用

目录 1.单机部署 1.下载安装包 2.启动zookeeper服务 3.启动kafka broker服务 2.集群部署 1.下载安装包 2.修改zookeeper配置 3.修改kafka配置 4.在3台机器上启动zookepper 5.在3台机器上启动kafka 6.检查是否启动OK 3.使用 1.创建topic 2.查看kafka topic分区数 …

OpenFaaS介绍

FaaS 云计算时代出现了大量XaaS形式的概念&#xff0c;从IaaS(Infrastructure as a Service)、PaaS(Platform as a Service)、SaaS(Software as a Service)到容器云引领的CaaS(Containers as a Service)&#xff0c;再到火热的微服务架构&#xff0c;它们都在试着将各种软、硬…

通过Prowork每日自动提醒待处理工作任务

对于中小团队来说&#xff0c;由于不需要繁琐的流程和高频的异地沟通&#xff0c;需要一款更适合中小团队的日程和项目管理工具。而Prowork就是这样一款敏捷高效的协同平台。Prowork与以往各种项目管理⼯具最⼤的不同在于&#xff0c;其弱化流程和弱化权限的特性&#xff0c;不…

ES6基础规范

1.变量声明const和let 我们都是知道在ES6以前&#xff0c;var关键字声明变量。无论声明在何处&#xff0c;都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部)。这就是函数变量提升例如: 下图左侧其实相当于右侧: 所以不用关心bool是否为true or false。实际上…

小知识点:Mac M1/M2 VMware Fusion 安装 Centos 7.9(ARM 64 版本)

最近换了 Mac M2 芯片的笔记本&#xff0c;用原来的 Centos 镜像安装虚拟机直接报错 “无法打开此虚拟机的电源&#xff0c;因为它需要使用 X86 计算机架构&#xff0c;而该架构与此 Arm 计算机架构主机不兼容。” 安装流程前置一、下载镜像二、安装虚拟机三、配置静态 IP四、安…

UVa 225 Golygons 黄金图形 暴力搜索 剪枝 状态判断

题目链接&#xff1a;Golygons 题目描述&#xff1a; 给定nnn和kkk个障碍物的坐标&#xff0c;你需要走nnn次&#xff0c;第一次走一个单位距离&#xff0c;第二次走二个单位距离&#xff0c;…&#xff0c;第nnn次走nnn个单位距离。走得过程中不能穿过或者到达障碍物所在的点&…

数据分析与SAS学习笔记6

数据集整理&#xff1a; 目的&#xff1a;对数据集中的数据进行预处理&#xff0c;使数据更适合统计分析过程对数据格式的要求&#xff1b; 常见整理要求&#xff1a; 1&#xff09;建立新的变量&#xff0c;衍生变量&#xff0c;删除某些原变量&#xff1b; 2&#xff09;…

Jira Server一年后“停服” 中国用户如何减损失降影响

近日Jira官方再次表示&#xff1a;在“2024年2月15日之后&#xff0c;用户所使用的 Server 版本的安全漏洞将不再有官方的修复方案&#xff0c;产品的 Bug 也不再被修复。在支持日期结束后&#xff0c;Atlassian 和Marketplace 合作伙伴将不再为任何问题、安全更新或关键漏洞的…

spring-web DispatcherServlet 源码分析

说明 本文基于 jdk 8, spring-framework 5.2.x 编写。author JellyfishMIX - github / blog.jellyfishmix.comLICENSE GPL-2.0 DispatcherServlet 的继承实现层次 关注点应放在 Servlet, GenericServlet, HttpServlet, HttpServletBean, FrameworkServlet, DispatcherServle…

关于Ubuntu20.04文件系统思考

文章目录问题产生Ubuntu文件系统中普通用户可读写地址Ubuntu文件系统Ubuntu文件系统详解一级目录二级目录查找Ubuntu中软件安装位置Ubuntu修改文件权限问题产生 使用electron框架开发桌面端跨平台软件时&#xff0c;当开发完成的程序部署到Ubuntu上&#xff0c;系统无法产生日…

推荐3款远程办公软件

一款好用的远程办公软件能够大大的提高我们的办公效率&#xff0c;在这篇文章中&#xff0c;我们将为您推荐几款常见又好用的远程办公软件&#xff0c;以帮助您能更加高效的远程办公。电脑远程办公软件有很多&#xff0c;本文主要从团队沟通软件、视频会议软件、远程控制软件等…

距离不是拦截我们前进的主因,与社科院杜兰金融硕士一起奔赴山海

最近有咨询社科院杜兰金融管理硕士项目的同学反馈他在西安&#xff0c;读研来北京上课太远了。一直在纠结要不要申请&#xff0c;其实距离不是问题&#xff0c;相向而行才是关键。在项目就读的同学好多也是来自外地&#xff0c;他们克服了种种困难来到项目学习&#xff0c;就是…

kubernetes教程 --service详解

Service 介绍 在kubernetes中&#xff0c;pod是应用程序的载体&#xff0c;我们可以通过pod的ip来访问应用程序&#xff0c;但是pod的ip地址不是固定的&#xff0c;这也就意味着不方便直接采用pod的ip对服务进行访问。 为了解决这个问题&#xff0c;kubernetes提供了Service…

行业分析| 智能无人自助设备

智能无人自助设备运用二维码技术、音视频通信技术和AI智能技术等相结合&#xff0c;提供了无人超市、自动售货机、智能快递柜等。当下很多商业地区或社区&#xff0c;都放置了智能无人自助设备&#xff0c;不仅可以为商家节省时间和精力、提升运营环境&#xff0c;也可以为众多…

宽刈幅干涉雷达高度计SWOT(Surface Water and Ocean Topography)卫星进展(待完善)

> 以下信息搬运自SWOT官方网站等部分文献资料&#xff0c;如有侵权请联系&#xff1a;sunmingzhismz163.com > 排版、参考文献、部分章节待完善 > 2023.02.17.22:00 初稿概况 2022年12月16日地表水与海洋地形卫星SWOT (Surface Water and Ocean Topography)在加利福尼…

SpringCloud(一)注册中心

注册中心eureka服务端客户端负载均衡nacos服务端客户端nacos分级存储模型配置集群属性nacos环境隔离-namespace临时实例和非临时实例Eureka和Nacos的异同负载均衡策略饥饿加载eureka 服务端 依赖 <!-- eureka注册中心服务端依赖--><dependencies><depe…

【数据结构与算法】1.树、二叉树、字典树、红黑树

文章目录简介1.树 (Tree)2.二叉树&#xff08;Binary Tree&#xff09;2.1.二叉树数据结构2.2.二叉树的三种遍历方式3.二叉查找树(Binary Search Tree)3.1.二叉查找树的概念和定义3.2.二分查找算法4.字典树(Trie)5.红黑树(Red-Black Tree)简介 本章主要讲解一些树的基本概念,二…

windows10/11,傻瓜式安装pytorch(gpu),在虚拟环境anaconda

安装anaconda地址 &#xff1a;Anaconda | The Worlds Most Popular Data Science Platform安装选项全默认点击next就行。查看支持cuda版本cmd命令行输入nvidia-smi。下图右上角显示11.6为支持的cuda版本。要是显示没有nvidia-smi命令。得安装nvidia驱动&#xff0c;一般情况都…

字符串匹配 - Overview

字符串匹配(String Matchiing)也称字符串搜索(String Searching)是字符串算法中重要的一种&#xff0c;是指从一个大字符串或文本中找到模式串出现的位置。字符串匹配概念字符串匹配问题的形式定义&#xff1a;文本&#xff08;Text&#xff09;是一个长度为 n 的数组 T[1..n]&…

Nodejs的安装

1. Nodejs的真正用途 a. 一个javascirpt的运行环境 b. 运行在服务器&#xff0c;作为web server c. 运行在本地&#xff0c;作为打包&#xff0c;构建工具 2. Nodejs的下载和安装 a. 普通方式&#xff08;访问官网&#xff09; 下载对应系统版本即可&#xff08;个人学习可无需…