来源:投稿 作者:LSC
编辑:学姐
(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 要求: 时间复杂度O(n) ,空间复杂度O(n) 进阶: 时间复杂度O(n),空间复杂度 O(1) (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 如果3D建模一个北京市,需要多少资源多少数据,没有标准答案 面试官问我什么时候能去实习 我问需要做什么学习准备、多久能转正(三个月往上) 关注下方《学姐带你玩AI》 算法工程师万能简历公式+200多个简历模板(中英文) 回复“简历”轻松获取! 码字不易,欢迎大家点赞评论收藏!# n int整型
# @return ListNode类
#
class Solution:
def reverse(self, head):
pre = None
p = head
while p != None:
t = p.next
p.next = pre
pre = p
p = t
return pre
def reverseBetween(self , head: ListNode, m: int, n: int) -> ListNode:
# write code here
num = 1
pre = ListNode(0)
pre.next = head
h, r = pre, head
while num < n:
if num < m:
h = h.next
r = r.next
num += 1
q = r.next
p = h.next
h.next = None
r.next = None
p = self.reverse(p)
h.next = p
while p.next != None:
p = p.next
p.next = q
return pre.next
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.开放题
9.反问