时间复杂度
从小到大:
O(1)
常数阶。复杂度为O(1)与问题规模无关
线性阶
O(n)比如一个for循环中代码执行n遍
n阶
对数阶
int n=9; int i=1; while(i<n) { i*=2; }
2^x>n时候退出。次数x=log2^n
时间复杂度为O(logN)
根号阶
int n=9;
int i=1;
while(i
i++;
}
平方阶
嵌套的两层for循环。
按每秒执行10^8计算:
题目数据nnnN
2.枚举
计算1到n中,数字x出现次数
Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int res = 0; int x = sc.nextInt(); for (int i = 1; i <= n; i++) { String f=i+" "; for(int j=0;j<f.length();j++){ int c=f.charAt(j)-'0'; if(c==x)res++; } } System.out.println(res);
模拟
按照题目要求一步步写出代码
地雷分布在n行m列的方格中,输入整数第一行n,m;
接下的n行依次输入数据,1表示有地雷,0表示没地雷
对于有地雷的要输出9;没地雷的输出其周围相邻的地雷数。
import java.util.Scanner;
public class TT {
public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt();
int m = sc.nextInt();
int[][] p = new int[n][m]; // 输入二维数组数据 for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
p[i][j] = sc.nextInt();
} } // 处理二维数组元素
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (p[i][j] == 1) {
System.out.print(9 + " ");
}
else {
int ans = 0;
for (int k = i - 1; k <= i + 1; k++) {
for (int l = j - 1; l <= j + 1; l++) {
if (k < 0 || l < 0 || k >= n || l >= m) continue; if (p[k][l] == 1) ans++;
} }
System.out.print(ans + " ");
} }
System.out.println();
} } }
处理串