面试题答案
一键面试- 使用
break
跳出整个嵌套循环:- 当外层循环满足某个条件时,使用
break
可以跳出整个嵌套循环。假设我们要在二维数组中找到特定元素,一旦找到就跳出整个循环。
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] target = 5 for i in range(len(matrix)): for j in range(len(matrix[i])): if matrix[i][j] == target: print(f"找到目标元素 {target} 在位置 ({i}, {j})") break if matrix[i][j] == target: # 这里利用内层循环结束后的状态,若找到则跳出外层循环 break
- 当外层循环满足某个条件时,使用
- 使用
continue
跳过当前内层循环剩余部分:- 当内层循环满足另一个条件时,使用
continue
跳过当前内层循环的剩余部分,进入下一次内层循环。例如,在遍历二维数组时,遇到负数就跳过当前内层循环的后续处理。
matrix = [[1, -2, 3], [4, 5, -6], [7, 8, 9]] for i in range(len(matrix)): for j in range(len(matrix[i])): if matrix[i][j] < 0: continue print(f"处理元素 {matrix[i][j]}")
- 当内层循环满足另一个条件时,使用
在C++ 中,代码示例如下:
- 使用
break
跳出整个嵌套循环:#include <iostream> #include <vector> int main() { std::vector<std::vector<int>> matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; int target = 5; for (size_t i = 0; i < matrix.size(); ++i) { for (size_t j = 0; j < matrix[i].size(); ++j) { if (matrix[i][j] == target) { std::cout << "找到目标元素 " << target << " 在位置 (" << i << ", " << j << ")" << std::endl; break; } } if (matrix[i][matrix[i].size() - 1] == target) { // 这里利用内层循环结束后的状态,若找到则跳出外层循环 break; } } return 0; }
- 使用
continue
跳过当前内层循环剩余部分:#include <iostream> #include <vector> int main() { std::vector<std::vector<int>> matrix = {{1, -2, 3}, {4, 5, -6}, {7, 8, 9}}; for (size_t i = 0; i < matrix.size(); ++i) { for (size_t j = 0; j < matrix[i].size(); ++j) { if (matrix[i][j] < 0) { continue; } std::cout << "处理元素 " << matrix[i][j] << std::endl; } } return 0; }
在Java中,代码示例如下:
- 使用
break
跳出整个嵌套循环:public class Main { public static void main(String[] args) { int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; int target = 5; outerloop: for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) { if (matrix[i][j] == target) { System.out.println("找到目标元素 " + target + " 在位置 (" + i + ", " + j + ")"); break outerloop; } } } } }
- 使用
continue
跳过当前内层循环剩余部分:public class Main { public static void main(String[] args) { int[][] matrix = {{1, -2, 3}, {4, 5, -6}, {7, 8, 9}}; for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) { if (matrix[i][j] < 0) { continue; } System.out.println("处理元素 " + matrix[i][j]); } } } }