Golang每日一练(leetDay0113) 奇偶链表、链表随机节点

题328. 奇偶链表 Python3 class Solution(object): def oddEvenList(self, head): """ :type head: ListNode :rtype: ListNode """ if not head: return head p=head t=q=p.next # t:偶数位链表的头指针 ... 阅读详情

 

目录

328. 奇偶链表 Odd Even Linked-list  🌟🌟

382. 链表随机节点 Llinked-list Random Node  🌟🌟

🌟 每日一练刷题专栏 🌟

Rust每日一练 专栏

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


328. 奇偶链表 Odd Even Linked-list

给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。

第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。

请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。

你必须在 O(1) 的额外空间复杂度和 O(n) 的时间复杂度下解决这个问题。 

示例 1:

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

示例 2:

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

提示:

  • n ==  链表中的节点数
  • 0 <= n <= 10^4
  • -10^6 <= Node.val <= 10^6

代码:

package main

import "fmt"

type ListNode struct {
	Val  int
	Next *ListNode
}

func oddEvenList(head *ListNode) *ListNode {
	if head == nil || head.Next == nil {
		return head
	}

	oddHead := head
	evenHead := head.Next
	odd := oddHead
	even := evenHead

	for even != nil && even.Next != nil {
		odd.Next = even.Next
		odd = odd.Next
		even.Next = odd.Next
		even = even.Next
	}

	odd.Next = evenHead
	return oddHead
}

func buildList(list []int) *ListNode {
	head := &ListNode{Val: 0}
	for i := len(list) - 1; i >= 0; i-- {
		p := &ListNode{Val: list[i]}
		p.Next = head.Next
		head.Next = p
	}
	return head.Next
}

func printList(head *ListNode) {
	curr := head
	for curr != nil {
		fmt.Printf("%d->", curr.Val)
		curr = curr.Next
	}
	fmt.Println("nil")
}

func main() {
	nums := []int{1, 2, 3, 4, 5}
	head := buildList(nums)
	printList(head)
	head = oddEvenList(head)
	printList(head)

	nums = []int{2, 1, 3, 5, 6, 4, 7}
	head = buildList(nums)
	printList(head)
	head = oddEvenList(head)
	printList(head)
}

输出:

1->2->3->4->5->nil
1->3->5->2->4->nil
2->1->3->5->6->4->7->nil
2->3->6->7->1->5->4->nil


382. 链表随机节点 Llinked-list Random Node

给你一个单链表,随机选择链表的一个节点,并返回相应的节点值。每个节点 被选中的概率一样 。

实现 Solution 类:

  • Solution(ListNode head) 使用整数数组初始化对象。
  • int getRandom() 从链表中随机选择一个节点并返回该节点的值。链表中所有节点被选中的概率相等。

示例:

输入
["Solution", "getRandom", "getRandom", "getRandom", "getRandom", "getRandom"]
[[[1, 2, 3]], [], [], [], [], []]
输出
[null, 1, 3, 2, 2, 3]

解释
Solution solution = new Solution([1, 2, 3]);
solution.getRandom(); // 返回 1
solution.getRandom(); // 返回 3
solution.getRandom(); // 返回 2
solution.getRandom(); // 返回 2
solution.getRandom(); // 返回 3
// getRandom() 方法应随机返回 1、2、3中的一个,每个元素被返回的概率相等。

提示:

  • 链表中的节点数在范围 [1, 10^4] 内
  • -10^4 <= Node.val <= 10^4
  • 至多调用 getRandom 方法 10^4 次

进阶:

  • 如果链表非常大且长度未知,该怎么处理?
  • 你能否在不使用额外空间的情况下解决此问题?

代码:

package main

import (
	"fmt"
	"math/rand"
)

type ListNode struct {
	Val  int
	Next *ListNode
}

type Solution struct {
	head *ListNode
}

func Constructor(nums []int) Solution {
	dummy := &ListNode{}
	curr := dummy

	for _, num := range nums {
		node := &ListNode{Val: num}
		curr.Next = node
		curr = curr.Next
	}

	return Solution{head: dummy.Next}
}

func (s *Solution) GetRandom() int {
	curr := s.head
	count := 1
	result := curr.Val
	for curr != nil {
		if rand.Intn(count) == 0 {
			result = curr.Val
		}
		curr = curr.Next
		count++
	}
	return result
}

func main() {
	solution := Constructor([]int{1, 2, 3})
	fmt.Println(solution.GetRandom())
	fmt.Println(solution.GetRandom())
	fmt.Println(solution.GetRandom())
	fmt.Println(solution.GetRandom())
}

输出:

1
3
2
2


🌟 每日一练刷题专栏 🌟

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

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

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

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

☸ 主页:https://hannyang.blog.youkuaiyun.com/ 

Rust每日一练 专栏

(2023.5.16~)更新中...

Golang每日一练 专栏

(2023.3.11~)更新中...

Python每日一练 专栏

(2023.2.18~2023.5.18)暂停更

C/C++每日一练 专栏

(2023.2.18~2023.5.18)暂停更

Java每日一练 专栏

(2023.3.11~2023.5.18)暂停更

【AIGC】大模型面试高频考点07-注意力(Attention)篇 AIGC面试高频考点 阅读详情

相关推荐

Fastwhisper + Pyannote 实现 ASR + 说话者识别

最近在研究ASR相关的业务,也是调研了不少模型,踩了不少坑,ASR这块,目前中文普通话效果最好的应该是阿里的modelscope上的中文模型了,英文的话,还是非whisper莫属了,而且whisper很变态,粤语效果也还不错,因此,如果实际业务中需要涉及到不同的语言,还是更推荐whisper多一点faster-whisper是使用CTranslate2对OpenAI的Whisper模型的重新实现,CTranslate2是一个用于Transformer模型的快速推理引擎。

qq_44193969的博客 1万+

Leetcode328. 奇偶链表

Leetcode328. 奇偶链表 题目: 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1)O(1)O(1),时间复杂度应为 O(nodes)O(nodes)O(nodes),nodesnodesnodes 为节点总数。 示例 1: 输入: 1->2->3->4->5->NULL 输出: 1->3->5->2-&

会流泪de鱼的博客 209

【Hadoop】开发插件安装

前言 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 Eclipse的插件机制是轻型软件组件化架构。在客户机平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java...

weixin_44039347的博客 3207

【每日一题】GO语言学习:奇偶链表

奇偶链表题目描述解题思路代码展示 题目描述 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为O(nodes),nodes 为节点总数。 示列1: 输入: 1->2->3->4->5->NULL 输出: 1->3->5->2->4->NULL 示列2: 输入: 2->1-&gt

qq_45190523的博客 410

【OpenClaw从入门到精通】第45篇:Skill供应链安全——如何识别并避开恶意技能插件?(2026实测版)

随着OpenClaw生态爆发式增长,全球Skills总量近75万个,日均新增2.1万个,但恶意/问题插件已超600个,数十万用户受影响。本文基于奇安信威胁报告及360安全实践,拆解恶意技能的五大核心特征,提出"安装前三步法"安全审查流程,详解安全技能来源白名单与定期审计方案,并深度解析360龙虾Skill安全超市的分级认证机制。读者可掌握从技能筛选、安装审查到术后审计的全流程安全防护手段,通过实操命令与案例演示,零成本构建Skill供应链安全防线,避免遭遇私钥窃取、资产损失等安全事件。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 561

【GlobalMapper精品教程】070:专题地图制作完整操作教程

与其它GIS软件一样,Globalmapper也可以制作出漂亮的地图,本文讲解专题地图制作完整操作流程。

智慧空间实验室 3749

【基础入门题006】求身份证校验位是否正确

【基础入门题】2021.11.02 关于身份证校验位: 1、将前面的身份证号码前17位数分别乘以不同的系数(第1~17位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2); 2、将这17位数字和系数相乘的结果相加; 3、用加出来和除以11,看余数是多少?   4、余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字,其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2; 5、通过上面得知如果余数是2,就会在身份证的第18位数字上

汉阳Hann's Home 1万+

【漏洞复现】Palo Alto Networks PAN-OS GlobalProtect 命令注入漏洞 CVE-2024-3400

在特定PAN-OS版本和不同功能配置下,未经身份验证的攻击者可能利用此漏洞在防火墙上以root权限执行任意代码。技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。本文所提供的工具仅用于学习,禁止用于其他!poc如下,注入点在Cookie中,将其中的DNSlog地址替换为你的dnslog地址,借助DNSLOG来复现,可以使用http://dnslog.pw/

失心少年 1225

Golang每日一练(leetDay0001) 两数之和、两数相加、无重复最长子串

1. 两数之和 Two Sum  2.两数相加 Add Two Numbers  3.无重复字符的最长子串 Longest substring without repeating characters

汉阳Hann's Home 6990

ICM20948 DMP代码详解(69)

ICM20948 DMP代码详解(69)

phmatthaus的专栏 615

ETAS工具导入Com Arxml修改步骤

通讯协议栈开发一般通过导入DBC实现,ETAS工具本身导入DBC也是生成arxml后执行cfggen,本文介绍直接导入客户提供的arxml文件,实现通讯协议栈的生成。通过Arxml导入相比于DBC来说,少了从DBC转为arxml的过程。而且arxml中能提供的信息也会更多。如果是DBC的话,很多信息(如PNC的映射,CANTP的配置等)都需要额外配置。不过还有连DBC都无法提供的,那就更麻烦了~

赞的博客 1541

【基础入门题032】分糖果问题

【基础入门题】2021.11.28 10个小孩围成一圈分糖果,老师分给第1个小孩10块,第2个小孩2块,第3个小孩8块,第4个小孩22块,第5个小孩16块,第6个小孩4块,第7个小孩10块,第8个小孩6块,第9个小孩14块,第10个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问:经过几轮操作所有小孩手中的糖块数一样多,糖果的块数都是几? 编程语言:包括但不限于Python 题目来源:派森特给站每日刷题频道 ———————————————— cand..

汉阳Hann's Home 6432

提交 ieee 手稿出现:Do not include the Reviewer PDF with my submission 怎么办

IEEE投稿Reviewer PDF选项说明 投稿时出现的"Do not include the Reviewer PDF with my submission"选项控制是否附带评审专用PDF文件。Reviewer PDF是系统自动生成包含所有投稿材料的完整PDF,用于同行评审。建议保持默认不勾选状态,除非确认编辑部不需要该文件,否则可能影响审稿流程。勾选表示不附带此PDF,不勾选则会正常生成并提交该评审文件。

ZhangJiqun&191cm&85kg 2183

【基础入门题017】切片法求回文数

【基础入门题】2021.11.13 数字323从左往右读与从右往左读是一样的,这种数称为回文数。 请使用for循环以及切片方法设计一个程序, 找出>=m并且<=n的全部回文数(其中m<n)。 例如: 输入: m = 888; n = 2222输出: 888 898 909 919 929 939 949 959 969 979 989 999 1001 1111 1221 1331 1441 1551 1661 1771 1881 1991 2002 2112 2222 编程..

汉阳Hann's Home 5693

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C/C++每日一练(20230222) 部分复制字符串、字典序排列问题、地下城游戏

1. 部分复制字符串(★)   2. 按字典顺序排列问题(★★)   3. 地下城游戏(★★★)

汉阳Hann's Home 5439

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【基础入门题004】转换百分制分数

【基础入门题】2021.10.30 给出一个百分制成绩,要求输出等级为A,B,C,D,E。 90分以上即n>=90为A;80<=n<90分为B;以此类推; 直到n<60分全为E;如果输入小于0或大于100的分数, 则输出“Not valid”。 输入形式:输入一个可能带小数点的分数 输出形式:根据对应关系,输出五分制分数档。 编程语言:包括但不限于Python 题目来源:派森特给站每日刷题频道 ...

汉阳Hann's Home 5402

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【基础入门题030】《孙子算经》之鸡兔同笼

​ 【基础入门题】2021.11.26 《孙子算经》今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何? 编程语言:包括但不限于Python 题目来源:派森特给站每日刷题频道

汉阳Hann's Home 5352

【基础入门题041】角谷猜想

【基础入门题】2021.12.07 角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3+1,如果是偶数,则除以2,得到的结果再按照上述规则中重复处理,最终总能得到1。 编制一个函数:从输入整数到1的步骤,每一步为一行,每一步都描述计算过程。最后一行输出End;如果输入为1,直接输出End。 编程语言:包括但不限于Python 题目来源:派森特给站每日刷题频道 ———————————————— 方法一:while循环 def guess(n): while n>1: ...

汉阳Hann's Home 5193

【基础入门题002】质因数的个数

【基础入门题】2021.10.29 求一个正整数 n 的所有质因数中不相同的个数。 如果没有质因数则输出0,如: Factor(6) = 2; Factor(7) = 0; Factor(1260) = 4 编程语言:包括但不限于Python 题目来源:派森特给站每日刷题频道 ...

汉阳Hann's Home 5123

【基础入门题043】最大公约数

【基础入门题】2021.12.09 给定两个正整数数,求这两个数的最大公约数。 编程语言:包括但不限于Python 题目来源:派森特给站每日刷题频道 ———————————————— 方法一:for循环 def GCD(m, n): gcd = 1 # 此行可以省略 for i in range(1,min(m, n)+1): if m%i==0 and n%i==0: gcd = i return gcd ...

汉阳Hann's Home 5035

【基础入门题003】分解阶乘的质因数

【基础入门题】2021.10.30 分解 n! 的质因数,写成连乘的样式,因数多于一个用^m表示个数。 如:Factor(6) = 2^4x3^2x5; Factor(8) = 2^7x3^2x5x7 编程语言:包括但不限于Python 题目来源:派森特给站每日刷题频道 ...

汉阳Hann's Home 5029

Python每日一练(20230220) 存在重复元素II、程序功能、分割链表

1.存在重复元素 II   2. 按要求实现程序功能   3. 分割链表

汉阳Hann's Home 4067

【基础入门题049】骰子游戏(二)

【基础入门题】2021.12.15 随机生成1~6范围内的三个数字模拟掷三个骰子,三数之和3~10为小;11~18为大。 请编制程序,要求输入1或0表示猜大小,记录猜测结果,猜满10次退出并输出结果。 编程语言:包括但不限于Python 题目来源:派森特给站每日刷题频道 ...

汉阳Hann's Home 3990

【基础入门题060】数字排列(五)

【基础入门题】2021.12.26 从1~9任取5个数字,能够升序排列出多少个五位数?(如12345,13579,23468) 输出这些五位数。 编程语言:包括但不限于Python 题目来源:派森特给站每日刷题频道

汉阳Hann's Home 3444

【基础入门题001】7的倍数或包含7的正整数

【基础入门题】2021.10.28 求100以内的正整数是7的倍数或包含7的数字并统计总个数。 编程语言:包括但不限于Python 题目来源:派森特给站每日刷题频道

汉阳Hann's Home 3426

Go AI Agent 实战 26|Agent 的 Observe、Think、Act 与执行循环

本课通过Go手写实现Agent最小执行循环,明确Observe、Think、Act三环节职责:Observe提炼当前状态,Think基于规则决策下一步,Act执行真实动作并更新状态。使用模拟工具与确定性Planner,完整演示任务从查询文章、读取正文到生成总结的闭环流程,支持轮次追踪、预算控制及多种终止状态(成功、失败、取消、超限),验证了Agent核心逻辑的可运行性与健壮性。

2302_80713883的博客 194
上一篇: Golang每日一练(leetDay0112) 2、3、4的幂
下一篇: Golang每日一练(leetDay0114) 矩阵中的最长递增路径、按要求补齐数组
Hann Yang
Hann Yang 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域 领域专家: 算法与数据结构技术领域 领域专家: 算法与数据结构技术领域
博客等级 码龄19年 4万+粉丝 1041原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hann Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值