1.自我介绍
2.介绍自己的项目,问的不深。(10分钟)
3.编程题
(1)将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n),空间复杂度 O(1)。
例如:
给出的链表为 1→2→3→4→5→NULL, m=2,n=4,
返回1→4→3→2→5→NULL.
数据范围: 链表长度 0<size≤1000,链表中每个节点的值满足∣val∣≤1000
要求: 时间复杂度O(n) ,空间复杂度O(n)
进阶: 时间复杂度O(n),空间复杂度 O(1)
# n int整型
# @return ListNode类
#
class Solution:def reverse(self, head):pre = Nonep = headwhile p != None:t = p.nextp.next = pre pre = p p = t return predef reverseBetween(self , head: ListNode, m: int, n: int) -> ListNode:# write code herenum = 1pre = ListNode(0)pre.next = headh, r = pre, head while num < n:if num < m:h = h.next r = r.next num += 1q = r.nextp = h.next h.next = Noner.next = None p = self.reverse(p)h.next = p while p.next != None:p = p.nextp.next = qreturn pre.next
(2)地上有一个 rows 行和 cols 列的方格。坐标从 [0,0] 到 [rows-1,cols-1] 。一个机器人从坐标 [0,0] 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于 threshold 的格子。 例如,当 threshold 为 18 时,机器人能够进入方格 [35,37] ,因为 3+5+3+7 = 18。但是,它不能进入方格 [35,38] ,因为 3+5+3+8 = 19 。请问该机器人能够达到多少个格子?
数据范围: 0 ≤ threshold ≤ 15 ,1 ≤ rows, cols ≤ 100
进阶:空间复杂度 O(nm) ,时间复杂度 O(nm)
样例1: 输入: 1,2,3 输出: 3
样例2: 输入: 0,1,3 输出: 3 输入: 10,1,100 输出: 29
说明: [0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15],[0,16],[0,17],[0,18],[0,19],[0,20],[0,21],[0,22],[0,23],[0,24],[0,25],[0,26],[0,27],[0,28] 这29种,后面的[0,29],[0,30]以及[0,31]等等是无法到达的
样例: 4 输入: 5,10,10 输出: 21
class Solution {
public:int dir[4][2] = {{0, 1}, {1, 0}, {-1, 0}, {0, -1}};int vis[105][105] = {0};int g[105][105] = {0};int f(int x) {int s = 0;while(x) {s += x % 10;x /= 10;}return s;}void dfs(int x, int y, int rows, int cols) {if(g[x][y] == -1) {return;}for(int i = 0; i < 4; ++i) {int xx = x + dir[i][0], yy = y + dir[i][1];if(xx >= 0 && xx < rows && yy >= 0 && yy < cols && g[xx][yy] != -1 && vis[xx][yy] == 0) {vis[xx][yy] = 1;g[xx][yy] = 1;dfs(xx, yy, rows, cols);}}}int movingCount(int threshold, int rows, int cols) {for(int i = 0; i < rows; ++i) {for(int j = 0; j < cols; ++j) {int sum = f(i) + f(j);if(sum > threshold) {g[i][j] = -1;}}}g[0][0] = 1;dfs(0, 0, rows, cols);int ans = 0;for(int i = 0; i < rows; ++i) {for(int j = 0; j < cols; ++j) {if(g[i][j] == 1) {ans++;}}}return ans;}
};
4.继续问实习项目,怎么优化模型的。
5.实习中遇到什么困难,怎么解决的?训练模型中遇到什么困难,怎么解决的?
6.C++的智能指针 (没用过)
7.C++的vector的内部是怎么实现的?
8.开放题
如果3D建模一个北京市,需要多少资源多少数据,没有标准答案
9.反问
面试官问我什么时候能去实习 我问需要做什么学习准备、多久能转正(三个月往上)
关注下方《学姐带你玩AI》🚀🚀🚀
算法工程师万能简历公式+200多个简历模板(中英文)
回复“简历”轻松获取!
码字不易,欢迎大家点赞评论收藏!
本文链接:https://my.lmcjl.com/post/1727.html
4 评论