牛客春招刷题训练营-2025.3.27题解

活动地址: 牛客春招刷题训练营 - 编程打卡活动

简单题 杨辉三角的变形

  • 前两行因为元素个数太少,不存在偶数
  • 因为每行第二个位置是 n-1,所以奇数行第一个偶数出现的位置为 2
  • 多推几项可以发现第一个偶数出现的位置循环节为 2324
package main

import (
	"fmt"
)

func main() {
	var n int
	fmt.Scan(&n)
	if n <= 2 {
		fmt.Println(-1)
	} else if n%2 == 1 {
		fmt.Println(2)
	} else if n%4 == 0 {
		fmt.Println(3)
	} else {
		fmt.Println(4)
	}
}

中等题 计算日期到天数转换

  1. 程序接收输入的年、月、日(y, m, d)
  2. 判断是否为闰年:
    • 如果年份能被4整除但不能被100整除,或者能被400整除,则为闰年
    • 闰年2月有29天,平年2月有28天
  3. 计算当前日期是一年中的第几天:
    • 将该月份之前所有月份的天数累加
    • 再加上当月的天数
package main

import "fmt"

var days = []int{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30}

func isLeapYear(year int) bool {
	if year%4 == 0 && year%100 != 0 || year%400 == 0 {
		return true
	}
	return false
}

func main() {
	var y, m, d int
	fmt.Scan(&y, &m, &d)
	if isLeapYear(y) {
		days[2] = 29
	}
	s := 0
	for i := 1; i < m; i++ {
		s += days[i]
	}
	s += d
	fmt.Println(s)
}

困难题 而后单调

要想让操作后是严格递增或严格递减数组,所以挑选出的长度为 m 的连续子数组一定要是原数组排序后元素之间是相邻有序的。

所以问题转换成了判断一个数组中是否存在长度为m的连续子数组,该子数组中的元素在排序后是连续递增或连续递减的。

  1. 解题步骤:

    • 首先读入数组长度n和目标长度m,以及数组a
    • 使用map检查数组中是否有重复元素,如果有重复则直接输出"NO"
    • 创建数组b作为a的副本并排序,用于取每个元素的排序后位置
    • 使用map记录每个元素在排序后数组中的位置索引
  2. 动态规划部分:

    • 创建两个dp数组:
      • dp1[]:记录以当前位置结尾的连续递增子序列长度
      • dp2[]:记录以当前位置结尾的连续递减子序列长度
  3. 状态转移:

    • 对于每个位置i
      • 如果当前元素在排序后位置比前一个元素大1,则dp1[i] = dp1[i-1] + 1
      • 如果当前元素在排序后位置比前一个元素小1,则dp2[i] = dp2[i-1] + 1
      • 否则重置为1
  4. 最后判断:

    • 遍历所有位置,如果存在任意位置的dp1[i]dp2[i]等于m,则输出"YES"
    • 否则输出"NO"

时间复杂度:,主要来自排序

空间复杂度:,用于存储dp数组和map

package main

import (
	"fmt"
	"sort"
)

func solve() {
	var n, m int
	fmt.Scan(&n, &m)
	a := make([]int, n)
	b := make([]int, n)
	mp := make(map[int]int)
	for i := 0; i < n; i++ {
		fmt.Scan(&a[i])
		b[i] = a[i]
		mp[a[i]] = -1
	}
	if len(mp) != n {
		fmt.Println("NO")
		return
	}
	sort.Ints(b)
	for i := 0; i < n; i++ {
		mp[b[i]] = i
	}
	dp1, dp2 := make([]int, n), make([]int, n)
	dp1[0], dp2[0] = 1, 1
	for i := 1; i < n; i++ {
		if mp[a[i]]-mp[a[i-1]] == 1 {
			dp1[i] = dp1[i-1] + 1
		} else {
			dp1[i] = 1
		}
		if mp[a[i]]-mp[a[i-1]] == -1 {
			dp2[i] = dp2[i-1] + 1
		} else {
			dp2[i] = 1
		}
	}
	for i := 0; i < n; i++ {
		if dp1[i] == m || dp2[i] == m {
			fmt.Println("YES")
			return
		}
	}
	fmt.Println("NO")
}

func main() {
	var t int
	fmt.Scan(&t)
	for i := 0; i < t; i++ {
		solve()
	}
}

#牛客春招刷题训练营#
牛客春招刷题训练营 文章被收录于专栏

爱丽姐真是太好了

全部评论

相关推荐

具体来说,‌小天才的面试流程通常包括网申、‌笔试和面试环节。‌网申后,‌应聘者会很快收到笔试邀请,‌笔试内容涵盖基础知识、‌编程题以及场景分析题等。‌通过笔试后,‌应聘者会进入面试环节,‌面试通常包括技术面和非技术面,‌技术面主要考察应聘者的项目经验和基础知识,‌非技术面则更多关注应聘者的性格、‌处事风格以及与公司文化的匹配度。‌面试结束后,‌公司会在一定时间内通知应聘者面试结果。‌整体来看,‌小天才的面试流程紧凑有序,‌注重应聘者的实际能力和潜力‌。‌你,将影响谁的童年⭐小天才2025届春季校园招聘【公司介绍】公司成立于1995年,专注于打造高品质儿童智能产品,目前旗下拥有“小天才&amp;amp;quot;“步步高&amp;amp;quot;两大品牌。【招聘岗位】每人可以投递2个志愿-技术类:算法、开发、大模型数据、运维等-产品类:硬件产品经理、软件产品经理-营销类:电商管培生、营销管培生、消费者研究等-职能类:人力资源等-设计类:工业设计、结构工程【岗位城市】东莞【福利待遇】提供有竞争力的薪资,绩效表现优异会带来加薪机会+年终奖米哈游+激励收入+五险一金+带薪年假、团队旅游、新人安家费、年度体检、支持落户、通勤班车+步步高实验学校保障子女教育无忧,滨海湾精装人才房火热建设中【内推链接】https://app.mokahr.com/m/campus_apply/eebbk/37594?recommendCode=DSh74pMh&amp;amp;amp;hash=%23%2Fjobs#/jobs【内推码】DSh74pMh(简历优先筛选,后续有问题随时联系)使用内推码简历优先筛选,有任何问题包括进度查询可以私信我,内推后在评论区留言【姓名缩写+岗位】,方便捞人和确认投递状态 #小天才#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#校招#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#内推#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#秋招#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务