持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情
前言
小白算法比较菜,希望能激励我每日更新,从leetcode第一题开始,2022年目标300题,记录从0到1的全过程!!
中国银联专场竞赛(2023届校园招聘专场)
中国银联专场竞赛(2023届校园招聘专场)-力扣
这个比赛当时没看到,参加的人不多,后来自己做发现并不难,四题都能a了,咱就分三期讲讲这四个题啦。
银联-1. 重构链表
给定一个链表的头节点 head ,在不改变节点顺序的基础下,请删除链表中所有值为 偶数 的节点,并返回这个链表 。
注意:
- 若链表为空,则返回空值。
示例 1
输入:head = [1,4,3,6]
输出:[1,3]
解释:如下图所示,黑色节点的值均为偶数,删除这些节点后,链表为 [1,3]
示例 2
输入:head = [5,7,9,9,1]
输出:[5,7,9,9,1]
解释:原链表中不存在值为偶数的节点。
示例 3
输入:head = [2,4]
输出:[]
解释:原链表中所有节点值均为偶数。
提示
1 <= head.length <= 10^5
0 <= Node.val <= 100
代码
这题是真的简单,出的没任何意义。。。。
class Solution {
public ListNode reContruct(ListNode head) {
ListNode root = new ListNode(0);
ListNode cur = root;
while(head!=null) {
if(head.val % 2!=0) {
cur.next = head;
cur = cur.next;
}
head = head.next;
}
cur.next = null;
return root.next;
}
}
银联-2. 勘探补给
工程部在一条坐标轴上设立了若干补给站,station[i] 表示编号为 i 的补给站的坐标。
现在有一些正在执行任务的勘探队需要进行补给,pos[i] 表示第 i 个勘探队当前所在位置的坐标。勘探队将优先选择当前距离最近的补给站进行补给。若两座补给站距离相同,则选择坐标更小的那一个。
请按顺序返回这些勘探队所选择的补给站编号。
注意:
station中的元素严格递增,即station[i] < station[i+1]。
示例 1
输入:
station = [2,7,8,10]
pos = [4,9]
输出:
[0,2]
解释:
坐标 4 的勘探队与坐标为 2 和 7 的补给站距离分别为 2 和 3, 选择坐标为 2的补给站
坐标 9 的勘探队与坐标为 8 和 10 的补给站的距离均为 1, 选择坐标更小为 8 的补给站
返回编号为 [0,2] 的补给站。
示例 2
输入:
station = [2,5,8,14,17]
pos = [1,14,11,2]
输出:
[0,3,2,0]
提示
1 <= pos.length,station.length <= 10^41 <= pos[i] <= 10^61 <= station[i] < station[i+1] <= 10^6
代码
第二题基本也没什么难度,一眼二分,复杂度O(nlogn)。暴力应该也可以做,盲猜不会超时,毕竟才第二题。
二分主要的是在什么时候停止,和开区间闭区间的问题,要不然很容易报超数组的异常。
class Solution {
public int[] explorationSupply(int[] station, int[] pos) {
int[] res = new int[pos.length];
for (int i = 0; i < res.length; i++) {
res[i] = finde(station, pos[i]);
}
return res;
}
public int finde(int[] station, int target) {
int left = 0;
int right = station.length - 1;
while (true) {
if (right - left <= 1) {
int t1 = Math.abs(station[right] - target) ;
int t2 = Math.abs(station[left] - target) ;
if (t1 < t2) {
return right;
}else {
return left;
}
}
int mid = left + (right - left) / 2;
if (station[mid] <= target) {
left = mid;
} else {
right = mid;
}
}
}
}
看了一眼时间很长的代码,就是用暴力做的,所以也不会超时了。
第三题连接如下-银联-3. 风能发电
银联-3. 风能发电
第四题连接如下-银联-4. 设计自动售货机
银联-4. 设计自动售货机
3.结束
前两题都不难,基本100题量的同学就可以做出来了,后面两个题也没什么高深的算法所以这场还算能ak了,gogogo,刷题刷题,每天一道,三年1000道!!!!