搜狐畅游24届C++
### 问题1:矩阵顺时针旋转90度的算法
**基本解法(空间复杂度 O(n^2),时间复杂度 O(n^2))**:
```python
def rotate_matrix(matrix):
n = len(matrix)
rotated = [[0] * n for _ in range(n)]
for i in range(n):
for j in range(n):
rotated[j][n - 1 - i] = matrix[i][j]
return rotated
```
**进阶解法(空间复杂度 O(1),时间复杂度 O(n^2))**:
可以通过原地旋转的方式来实现,不需要额外的空间。
```python
def rotate_matrix(matrix):
n = len(matrix)
# 原地旋转矩阵
for i in range(n // 2):
for j in range(i, n - 1 - i):
temp = matrix[i][j]
# 左到上
matrix[i][j] = matrix[n - 1 - j][i]
# 下到左
matrix[n - 1 - j][i] = matrix[n - 1 - i][n - 1 - j]
# 右到下
matrix[n - 1 - i][n - 1 - j] = matrix[j][n - 1 - i]
# 上到右
matrix[j][n - 1 - i] = temp
return matrix
```
### 问题2:字符串循环右移n位
```python
def right_rotate_string(s, n):
n = n % len(s) # 防止n大于字符串长度
return s[-n:] + s[:-n]
```
### 问题3:判断链表中是否有环
可以使用快慢指针的方法来检测环的存在。
```python
def has_cycle(head):
slow = fast = head
while fast and fast.next:
slow = slow.next
fast = fast.next.next
if slow == fast:
return True
return False
```
### 问题4:解决请求重复执行的问题
解决这类问题的常见方法是在业务逻辑中加入幂等性控制,即确保同样的请求无论执行多少次,其结果都是一致的。可以通过在数据库中记录已经处理的请求ID或者状态来实现。
### 问题5:经常要操作的内存分类
常见的内存分类包括:堆内存、栈内存、全局/静态存储区、常量存储区、代码段等。
### 问题6:数组XZ所占的空间
字符串"ChangYou"包含8个字符和一个结尾的空字符'\0',所以数组XZ所占的空间为9字节。
### 问题7:大端模式下的输出结果
在大端模式下,字节的高位存储在低地址,低位存储在高地址。因此,`value.a = 3`在内存中的存储形式是`00 00 00 03`,`short b`取前两个字节,即`00 03`,`value.b & 1`的结果是0,因为最低位是0。
### 问题8:信号量的变化范围
如果有m个进程共享一个临界资源,那么信号量的初始值通常设置为1,表示资源可用。在任何时刻,信号量的值至少为0(没有进程等待资源),最多为m-1(所有进程都在等待资源)。因此,信号量的变化范围是[0, m-1]。
### 问题9:LRU页置换算法的总置换次数
根据LRU(最近最少使用)算法,我们可以模拟整个页面访问序列,并计算出需要置换的次数。这个过程比较复杂,需要详细分析每次访问后页面的状态。
### 问题10:C++类T的对象数量
根据提供的代码,创建了以下对象:
- `T b(5);` 创建了一个对象b。
- `T c[6];` 创建了一个包含6个对象的数组c。
- `T &d = b;` 创建了一个引用d,指向对象b,不创建新对象。
- `T e=b;` 创建了一个新的对象e,并初始化为对象b的状态。
- `T *p = new T (4);` 创建了一个新的动态分配的对象,并通过指针p访问。
总共创建了1 + 6 + 1 + 1 = 9个对象。
### 问题11:字符串连接后的结果
使用`strcat(a, b)`后,字符串a的内容变为"abc123xyz"。
### 问题12:枚举类型的访问
在C++中,枚举类型默认第一个成员的值为0,后续成员依次递增。在这个枚举类型中,`x1`的值为0,`x3`的值为10,因此`x4`的值为11,`x5`的值为12。如果在函数外部声明了`x`,并且没有显式赋值,那么`x`的值取决于它被定义的位置和作用域。如果是在全局作用域中,且没有显式初始化,那么`x`的值将是0。如果是在某个特定的作用域内,那么它的值可能是未定义的。