一、一面 笔试
直接给你发了一份笔试题,让你24小时内回传
- 合并时间区间(建议时间复杂度 O(n) )
给定⼀个按开始时间从⼩到⼤排序的时间区间集合,请将重叠的区间合并。时
间区间集合⽤⼀个⼆维数组表示,⼆维数组的每⼀⾏表示⼀个时间区间(闭区
间),其中 0 位置元素表示时间区间开始,1 位置元素表示时间区间结束。
例 1:输⼊:[ [1, 3], [2, 6], [8, 10], [15, 18] ]
返回: [ [1, 6], [8, 10], [15, 18]]
解释:时间区间 [1, 3] 和 [2, 6] 有部分重叠,合并之后为 [1, 6]
例 2:输⼊:[[1, 4], [4, 5]]
返回:[[1, 5]]
解释:时间区间[1,4] 和 [4,5]重叠了⼀个时间点,合并之后为 [1,5]
需要实现的⽅法原型:int[][] merge(int[][] intervals) - 缩写校验(建议时间复杂度 O(n) )
给定⼀个⾮空字符串 s 和⼀个缩写 abbr,请校验它们是否匹配。
假设字符串中只包含⼩写字⺟,缩写中只包含⼩写字⺟和数字。缩写中的数字
表示其缩略的字符数;连续多位数字表示⼀个多位数。
例如,字符串 “word” 的缩写有且仅有以下这些:[“word", “1ord”, “w1rd”,
“wo1d”, “wor1”, “2rd”, “w2d”, “wo2”, “1o1d”, “1or1”, “w1r1”, “1o2”, “2r1”, “3d”,
“w3”, “4"]。
例 1:输⼊:s = “internationalization",abbr = “i12iz4n”
返回:true
解释:abbr 中的 12 表示有⼗⼆个字符被缩略了。
例 2:输⼊:s = “apple",abbr = “a2e"
返回:false
需要实现的⽅法原型:boolean valid(String word, String abbr) - 最⼩惩罚
给定⼀个 ⽆向图 包含 N 个节点和 M 条边, 每条边 Mi 的代价为 Ci 。图中⼀条
路径的惩罚是指对该路径上所有边的代价 Ci 执⾏位运算或(bitwise OR)操
作得到的。假如⼀条路径上包含了边 M1,M2,M3 … … ,Mk,那么对应的惩
罚就是 C1 OR C2 OR C3 OR … OR Ck。(OR代表位运算或,即 “|” )
问题:给定图上两个节点 start 和 end,找到从 start 到 end 的所有路径中惩罚
值最⼩的路径,对应的最⼩惩罚值作为结果返回。如果路径不存在就返回 -1。
注意:任意两个节点之间最多存在⼀条边,图中可能存在有环路。
需要实现的⽅法原型:
int minPath(int n, int[][] edges, int start, int end)
参数含义:
n:节点总数;节点编号从 1 开始,⼀直到 n,共有 n 个;
edges:⽆向图的边;edges[i] 表示边Mi,其中 edges[i][0] 和
edges[i][1] 是Mi的两个节点的编号,edges[i][2] 是Mi对应的代价 Ci;
start 和 end:路径的开始和结束节点编号
限制条件: 1 <= n <=1000
1 <= edges.length <= 10000
1 <= Ci <=1024
例:edges = [ [1,2,1],[2,3,3],[1,3,100] ],对应的图如下:
当 start = 1,end = 3 时,其最⼩惩罚路径是 1->2->3, C(1,2)=1并且C(2,3)=3,
对应的惩罚值为 1 | 3 = 3。
二、二面
- 首先给你解读了你之前的那些笔试做的那些题目,问你是不是自己做的,然后根据问题问了你几个问题,主要是题目的思路。‘
- 问了一些spring注解,mysql的事务,spring的注解等相关的问题。