当前位置: 首页 > wzjs >正文

买机票便宜的网站建设长沙网站优化体验

买机票便宜的网站建设,长沙网站优化体验,网站支付页面怎么做的,网站推广专家题目:234. 回文链表 给你一个单链表的头节点 head,请你判断该链表是否为 回文链表。如果是,返回 true;否则,返回 false。 示例 1: 输入:head [1,2,2,1] 输出:true示例 2&#x…

题目:234. 回文链表

给你一个单链表的头节点 head,请你判断该链表是否为 回文链表。如果是,返回 true;否则,返回 false

示例 1:

输入:head = [1,2,2,1]
输出:true

示例 2:

输入:head = [1,2]
输出:false

提示:

  • 链表中节点数目在范围[1, 10 5 10^5 105] 内
  • 0 <= Node.val <= 9

进阶: 你能否用 $ O(n) $ 时间复杂度和 $ O(1) $ 空间复杂度解决此题?

解题思路

通过快慢指针找到中点,反转后半部分链表且进行比较。

实现代码

package leetcodeimport ("github.com/superproj/go-leetcode/structure"
)// ListNode define
type ListNode = structure.ListNode/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func isPalindrome(head *ListNode) bool {if head == nil {return true}// 找出中点,快指针到了链表结尾,慢指针也就到了链表中点mid := findMid(head)// 翻转后半部分链表rev := reverse(mid)// 比对前后链表for rev != nil && head != nil {if head.Val != rev.Val {return false}rev, head = rev.Next, head.Next}return true
}func findMid(head *ListNode) *ListNode {slow, fast := head, headfor fast != nil && fast.Next != nil {slow, fast = slow.Next, fast.Next.Next}return slow
}func reverse(head *ListNode) *ListNode {// 经过遍历,后半部分链表会变成一个头节点为 prev,最后为 nil 的链表var prev, curr *ListNode = nil, headfor curr != nil {prev, curr, curr.Next = curr, curr.Next, prev}return prev
}

单元测试

package leetcodeimport ("testing""github.com/stretchr/testify/assert""github.com/superproj/go-leetcode/structure"
)func Test_isPalindrome(t *testing.T) {assert := assert.New(t)type args struct {first []int}tests := []struct {args argswant bool}{{args: args{[]int{1, 1, 2, 2, 3, 4, 4, 4}},want: false,},{args: args{[]int{1, 1, 1, 1, 1, 1}},want: true,},{args: args{[]int{1, 2, 2, 1, 3}},want: false,},{args: args{[]int{1}},want: true,},{args: args{[]int{}},want: true,},{args: args{[]int{1, 2, 2, 2, 2, 1}},want: true,},{args: args{[]int{1, 2, 2, 3, 3, 3, 3, 2, 2, 1}},want: true,},{args: args{[]int{1, 2}},want: false,},{args: args{[]int{1, 0, 1}},want: true,},{args: args{[]int{1, 1, 2, 1}},want: false,},}for _, tt := range tests {first := structure.Ints2List(tt.args.first)actual := isPalindrome(first)assert.Equal(tt.want, actual)}
}
http://www.dtcms.com/wzjs/157767.html

相关文章:

  • 好的建设网站公司简介google ads
  • 做html网站模板网站关键词优化怎么做的
  • 马鞍山网站建设cnfg平台推广是什么
  • 大良网站建设乱码链接怎么用
  • wordpress评论框文件seo服务外包价格
  • 自己服务器可以做网站营销型网站名词解释
  • 深圳网站制作hi0755媒体资源网官网
  • 夺宝网站制作推广软件app
  • 网站流量好难做线上推广策略
  • 网站价钱优化关键词排名公司
  • 个人微信注册网站网络营销案例有哪些
  • 自己做网站接入微信和支付宝宁波seo公司哪家好
  • 百度百科网站怎么做游戏推广拉人渠道
  • 网站卖了对方做违法吗专业营销推广团队
  • 网站开发与应用 答案做网站用什么编程软件
  • 舒兰网站建设seo站内优化
  • 宜昌怎样优化网站建设电脑课程培训零基础
  • 做网站百度一下媒体资源网
  • 电影网站html模板网络科技有限公司
  • 厦门网站seo今日足球赛事推荐
  • dz网站建设视频教程资源最全的网盘搜索引擎
  • 北京城乡建设部网站首页山东今日头条新闻
  • 地方门户信息网站建设方案seo网站外链平台
  • 怎么做淘宝推广网站合肥全网优化
  • 腾讯云服务器网站域名备案友情链接属于免费推广吗
  • wordpress京东seo实战培训教程
  • 接单子做网站词百度首页排名怎么做到
  • 网站页面设计教程什么是网站外链
  • 响应式网站模板免费下载营销软件培训
  • 小型企业网站模板全球热搜榜排名今日