Golang每日一练(leetDay0031)

news2024/11/16 1:47:50

目录

91. 解码方法  Decode Ways  🌟🌟

92. 反转链表 II Reverse Linked List II  🌟🌟

93. 复原 IP 地址 Restore IP Addresses  🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


91. 解码方法  Decode Ways

一条包含字母 A-Z 的消息通过以下映射进行了 编码 :

'A' -> "1"
'B' -> "2"
...
'Z' -> "26"

要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,"11106" 可以映射为:

  • "AAJF" ,将消息分组为 (1 1 10 6)
  • "KJF" ,将消息分组为 (11 10 6)

注意,消息不能分组为  (1 11 06) ,因为 "06" 不能映射为 "F" ,这是由于 "6" 和 "06" 在映射中并不等价。

给你一个只含数字的 非空 字符串 s ,请计算并返回 解码 方法的 总数 。

题目数据保证答案肯定是一个 32 位 的整数。

示例 1:

输入:s = "12"
输出:2
解释:它可以解码为 "AB"(1 2)或者 "L"(12)。

示例 2:

输入:s = "226"
输出:3
解释:它可以解码为 "BZ" (2 26), "VF" (22 6), 或者 "BBF" (2 2 6) 。

示例 3:

输入:s = "0"
输出:0
解释:没有字符映射到以 0 开头的数字。
含有 0 的有效映射是 'J' -> "10" 和 'T'-> "20" 。
由于没有字符,因此没有有效的方法对此进行解码,因为所有数字都需要映射。

提示:

  • 1 <= s.length <= 100
  • s 只包含数字,并且可能包含前导零。

代码1: 动态规划

package main

import (
	"fmt"
)

func numDecodings(s string) int {
	n := len(s)
	if n == 0 {
		return 0
	}
	dp := make([]int, n+1)
	dp[0] = 1
	if s[0] == '0' {
		dp[1] = 0
	} else {
		dp[1] = 1
	}
	for i := 2; i <= n; i++ {
		if s[i-1] != '0' {
			dp[i] = dp[i-1]
		}
		if s[i-2] == '1' || (s[i-2] == '2' && s[i-1] >= '0' && s[i-1] <= '6') {
			dp[i] += dp[i-2]
		}
	}
	return dp[n]
}

func main() {
	fmt.Println(numDecodings("12"))
	fmt.Println(numDecodings("226"))
	fmt.Println(numDecodings("0"))
}

输出:

2
3
0

代码2: 滚动数组

package main

import (
	"fmt"
)

func numDecodings(s string) int {
	n := len(s)
	if n == 0 {
		return 0
	}
	prev1, prev2 := 1, 0
	if s[0] == '0' {
		prev1, prev2 = 0, 0
	} else {
		prev1, prev2 = 1, 1
	}
	for i := 2; i <= n; i++ {
		cur := 0
		if s[i-1] != '0' {
			cur = prev1
		}
		if s[i-2] == '1' || (s[i-2] == '2' && s[i-1] >= '0' && s[i-1] <= '6') {
			cur += prev2
		}
		prev1, prev2 = cur, prev1
	}
	return prev1
}

func main() {
	fmt.Println(numDecodings("12"))
	fmt.Println(numDecodings("226"))
	fmt.Println(numDecodings("0"))
}

代码3: DFS

package main

import (
	"fmt"
)

func numDecodings(s string) int {
	n := len(s)
	memo := make([]int, n)
	return dfs(s, 0, memo)
}

func dfs(s string, start int, memo []int) int {
	if start == len(s) {
		return 1
	}
	if memo[start] != 0 {
		return memo[start]
	}
	res := 0
	if s[start] != '0' {
		res += dfs(s, start+1, memo)
	}
	if start+1 < len(s) && (s[start] == '1' || (s[start] == '2' && s[start+1] >= '0' && s[start+1] <= '6')) {
		res += dfs(s, start+2, memo)
	}
	memo[start] = res
	return res
}

func main() {
	fmt.Println(numDecodings("12"))
	fmt.Println(numDecodings("226"))
	fmt.Println(numDecodings("0"))
}

92. 反转链表 II Reverse Linked List II

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。

示例 1:

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

示例 2:

输入:head = [5], left = 1, right = 1
输出:[5] 

提示:

  • 链表中节点数目为 n
  • 1 <= n <= 500
  • -500 <= Node.val <= 500
  • 1 <= left <= right <= n

进阶: 你可以使用一趟扫描完成反转吗?

代码:

go

输出:

1->2->3->4->5<nil>

3->2->1->4->5<nil>


93. 复原 IP 地址 Restore IP Addresses

有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。

  • 例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245""192.168.1.312" 和 "192.168@1.1" 是 无效 IP 地址。

给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 '.' 来形成。你 不能 重新排序或删除 s 中的任何数字。你可以按 任何 顺序返回答案。

示例 1:

输入:s = "25525511135"
输出:["255.255.11.135","255.255.111.35"]

示例 2:

输入:s = "0000"
输出:["0.0.0.0"]

示例 3:

输入:s = "101023"
输出:["1.0.10.23","1.0.102.3","10.1.0.23","10.10.2.3","101.0.2.3"]

提示:

  • 1 <= s.length <= 20
  • s 仅由数字组成

代码:

go

输出:


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/ 

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

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

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

相关文章

pdf转excel表格怎么做?这3种方法简单又方便

在日常工作和生活中&#xff0c;我们经常需要转换不同格式的文件&#xff0c;比如将PDF转换为Excel表格。虽然转换过程看似简单&#xff0c;但实际上要想转换好&#xff0c;选择一款专业的PDF转换器是非常必要的。今天&#xff0c;我将为大家介绍几款值得推荐的PDF转换器&#…

一文全解经典机器学习算法之线性回归(关键词:回归分析、最小二乘法、极大似然估计、梯度下降法、逻辑回归、对数几率、线性判别分析)

文章目录一&#xff1a;线性回归基本概念&#xff08;1&#xff09;回归分析&#xff08;2&#xff09;线性回归二&#xff1a;线性回归确定参数的方法&#xff08;1&#xff09;最小二乘法A&#xff1a;代数求法B&#xff1a;矩阵求法&#xff08;主要使用&#xff09;&#x…

国产大模型狂飙,谁能率先做出第一个中国版GPT

热火烹油的大模型赛道打起了“嘴仗”。 搜狗前CEO王小川评价百度创始人李彦宏的采访发言称&#xff1a;“你们采访的可能是平行世界的他&#xff0c;不是我们这个世界里的。” 而针对王小川的评论&#xff0c;百度集团副总裁、搜索平台负责人肖阳又回应道&#xff1a;“王小…

JavaSE补充 | 网络编程

目录 一&#xff1a;网络编程 1. 网络编程概述 2. 网络通信要素 3. 传输层协议&#xff1a;TCP 与 UDP 协议 4. 网络编程 API 5. TCP网络编程 6. UDP 网络编程 7. URL编程 一&#xff1a;网络编程 1. 网络编程概述 Java是 Internet 上的语言&#xff0c;它从语言级上提…

【redis】单线程 VS 多线程(入门)

【redis】单线程 VS 多线程&#xff08;入门&#xff09; 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#…

Python之数据库操作(连接数据库,增删改查操作,易错点理解)

文章目录 前言一、Python之数据库操作二、pymysql 安装三、pymysql 包引入 连接数据库创建游标执行sql数据 - 增删改查要获取查询结果数据关闭游标&#xff0c;关闭数据库连接总结前言 记录&#xff1a;Python操作数据库的步骤&#xff0c;不容易理解的地方。 一、Python之数据…

开局一张图,构建神奇的 CSS 效果

假设&#xff0c;我们有这样一张 Gif 图&#xff1a; 利用 CSS&#xff0c;我们尝试来搞一些事情。 图片的 Glitch Art 风 在这篇文章中 --CSS 故障艺术&#xff0c;我们介绍了利用混合模式制作一种晕眩感觉的视觉效果。有点类似于抖音的 LOGO。 像是这样&#xff1a; 假设…

14、DRF实战总结:获取Django请求路径的方法以及各自的区别

Django项目开发中经常需要在视图中获取用户当前请求url的地址&#xff0c;然后进行跳转或判断操作&#xff0c;比如是否在url黑白名单里。Django提供了多种获取请求路径的实现方式&#xff0c;比如request.path, request.path_info, request.get_full_path和request.build_abso…

【Python】【进阶篇】十六、Python爬虫的浏览器实现抓包

目录十六、Python爬虫的浏览器实现抓包16.1 控制台界面16.1.1 NetWork16.1.2 Sources16.1.3 Console16.1.4 Application16.2 数据包抓取16.3 看变化规律十六、Python爬虫的浏览器实现抓包 几乎所有浏览器都提供了抓取数据包的功能&#xff0c;因为浏览器为抓包提供了一个专门的…

【MQTT协议】使用c++实现mqtt协议(Mosquitto源码编译)

目录MQTT协议简介发布/订阅模式简介MQTT协议与发布/订阅模式的联系基于Mosquitto实现的MQTT服务器Mosquitto安装MQTT协议简介 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的、基于发布/订阅模式的消息传输协议&#xff0c;其最初由IBM开发&…

(链表专题) 445. 两数相加 II ——【Leetcode每日一题】

445. 两数相加 II 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数字都不会以零开头。 示例1&#xff1a; 输入&#xff1a;l1 [7,2,…

什么是时间复杂度和空间复杂度

什么是时间复杂度和空间复杂度 &#x1f355;博客主页&#xff1a;️自信不孤单 &#x1f36c;文章专栏&#xff1a;数据结构与算法 &#x1f35a;代码仓库&#xff1a;破浪晓梦 &#x1f36d;欢迎关注&#xff1a;欢迎大家点赞收藏关注 文章目录什么是时间复杂度和空间复杂度1…

【服务器数据恢复】 EXT4文件系统下KVM虚拟机数据恢复案例

服务器数据恢复环境&#xff1a; Linux系统服务器&#xff0c;EXT4文件系统&#xff0c;部署KVM虚拟机。 服务器故障&#xff1a; 服务器上的KVM虚拟机被误操作删除&#xff0c;每台虚拟机包含一个qcow2格式的磁盘文件和一个raw格式的磁盘文件&#xff0c;需要恢复raw格式的磁…

大数据-玩转数据-oracle创建dblink及应用

一、创建DBLINK的应用场景 oracle在进行跨库访问时&#xff0c;可以通过创建dblink实现。 二、创建DBLINK应用场景 在tnsnames.ora中配置两个数据库别名&#xff1a;orcl(用户名&#xff1a;wangyong 密码&#xff1a;1988)、orcl2(用户名&#xff1a;wangyong 密码&#xf…

第5章 uniapp开发ImoocBlog

收获&#xff1a; 1.微信小程序 2.uni-app开发慕课热搜项目 3.构建企业级项目的编程思维 4.上线可商用的企业项目 第5章 uniapp开发ImoocBlog uniapp开发ImoocBlog 5-1&#xff1a;开篇 经过前面四个章节&#xff0c;我们已经完成了 微信小程序 的学习。那么从这一章开始我…

【微服务笔记10】微服务组件之Hystrix实现服务降级和服务熔断

这篇文章&#xff0c;主要介绍微服务组件之Hystrix实现服务降级和服务熔断。 目录 一、服务降级 1.1、什么是服务降级 1.2、实现服务降级 &#xff08;1&#xff09;引入依赖 &#xff08;2&#xff09;编写Service层代码 &#xff08;3&#xff09;编写Controller层代码…

CesiumForUnreal实现鹰眼地图(MiniMap)效果

文章目录 1.实现目标2.实现过程3.参考资料1.实现目标 基于CesiumForUnreal插件加载的在线地形和影像数据,使用Widget实现鹰眼小地图的效果,GIF动图如下: 2.实现过程 在UE开发中,常用的以Widget方法实现小地图的形式有两种。一种是动态的小地图,即地图的纹理图片会发生变化…

【Spark】RDD缓存机制

1. RDD缓存机制是什么&#xff1f; 把RDD的数据缓存起来&#xff0c;其他job可以从缓存中获取RDD数据而无需重复加工。 2. 如何对RDD进行缓存&#xff1f; 有两种方式&#xff0c;分别调用RDD的两个方法&#xff1a;persist 或 cache。 注意&#xff1a;调用这两个方法后并不…

腾讯云轻量服务器和云服务器区别对比(超详细全方位)

腾讯云轻量服务器和云服务器有什么区别&#xff1f;为什么轻量应用服务器费用更低&#xff1f;是因为轻量服务器CPU内存性能比云服务器CVM性能差吗&#xff1f;轻量应用服务器适合中小企业或个人开发者搭建企业官网、博客论坛、微信小程序或开发测试环境&#xff0c;云服务器CV…

Parcel 实践:轻松打包前端项目

结论 Parcel 是一个功能强大且易于使用的前端构建工具&#xff0c;它可以帮助您快速地构建 Web 项目。本文提供了关于如何开始使用 Parcel、配置和优化性能的实践方法。希望这些内容对您有所帮助&#xff01; Parcel 是一个快速&#xff0c;零配置的 Web 应用打包工具。它的简单…