Skip to content

Commit 4deef20

Browse files
committed
数组相关题目
没什么技巧。直接暴力解
1 parent 55693bf commit 4deef20

File tree

5 files changed

+187
-0
lines changed

5 files changed

+187
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package 数据结构.数组与矩阵;
2+
3+
/**
4+
* Created by 周杰伦 on 2018/4/17.
5+
*/
6+
public class 对角元素相等的矩阵 {
7+
public static void main(String[] args) {
8+
int [][] matrix = {{1,2,3,4},{5,1,2,3},{9,5,1,2}};
9+
System.out.println(isToeplitzMatrix(matrix));
10+
}
11+
//按照每个斜行来判断,一旦有不同的值直接返回false
12+
public static boolean isToeplitzMatrix(int[][] matrix) {
13+
int m = matrix.length;
14+
int n = matrix[0].length;
15+
int len = m > n ? n : m;
16+
for (int i = 1;i < len;i ++) {
17+
if (matrix[i - 1][i - 1] != matrix[i][i]) {
18+
return false;
19+
}
20+
}
21+
for (int i = 1;i < m - 1;i ++) {
22+
for (int j = 0;j < n - 1;j ++) {
23+
if (matrix[i][j] != matrix[i + 1][j + 1]) {
24+
return false;
25+
}
26+
}
27+
}
28+
for (int i = 1;i < n - 1;i ++) {
29+
for (int j = 0;j < m - 1;j ++) {
30+
if (matrix[j][i] != matrix[j + 1][i + 1]) {
31+
return false;
32+
}
33+
}
34+
}
35+
return true;
36+
}
37+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package 数据结构.数组与矩阵;
2+
3+
/**
4+
* Created by 周杰伦 on 2018/4/17.
5+
*/
6+
public class 找出数组中最长的连续1 {
7+
// on
8+
public int findMaxConsecutiveOnes(int[] nums) {
9+
int max = 0;
10+
int count = 0;
11+
for (int i = 0;i < nums.length;i ++) {
12+
if (nums[i] == 1) {
13+
count ++;
14+
if (count > max) {
15+
max = count;
16+
}
17+
}else {
18+
count = 0;
19+
}
20+
}
21+
return max;
22+
}
23+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package 数据结构.数组与矩阵;
2+
3+
import java.util.HashMap;
4+
import java.util.Set;
5+
6+
/**
7+
* Created by 周杰伦 on 2018/4/17.
8+
*/
9+
public class 数组的度 {
10+
public static void main(String[] args) {
11+
int []a = {1,2,2,3,1,4,2};
12+
System.out.println(findShortestSubArray(a));
13+
}
14+
//暴力解法:
15+
//先找到出现次数最多的数。
16+
//可能有多个,对每个数求需要序列的长度。取最小值
17+
public static int findShortestSubArray(int[] nums) {
18+
int max = 0;
19+
int cnt = 0;
20+
HashMap<Integer, Integer> map = new HashMap<>();
21+
for (int i = 0;i < nums.length;i ++) {
22+
if (map.containsKey(nums[i])) {
23+
map.put(nums[i], map.get(nums[i]) + 1);
24+
}else {
25+
map.put(nums[i], 1);
26+
}
27+
}
28+
Set<Integer> set = map.keySet();
29+
for (int i : set) {
30+
max = Math.max(map.get(i), max);
31+
}
32+
System.out.println("max:" + max);
33+
int min = Integer.MAX_VALUE;
34+
for (int x : set) {
35+
cnt = 0;
36+
int k = -1;
37+
for (int i = 0; i < nums.length; i++) {
38+
if (x == nums[i]) {
39+
cnt ++;
40+
if (k == -1) {
41+
k = i;
42+
}
43+
}
44+
if (cnt == max) {
45+
min = Math.min(i - k + 1, min);
46+
break;
47+
}
48+
}
49+
}
50+
return min;
51+
}
52+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package 数据结构.数组与矩阵;
2+
3+
import java.util.Arrays;
4+
5+
/**
6+
* Created by 周杰伦 on 2018/4/17.
7+
*/
8+
public class 数组相邻差值的个数 {
9+
//这题不会 注意一下
10+
//让前 k+1 个元素构建出 k 个不相同的差值,序列为:1 k+1 2 k 3 k-1 ... k/2 k/2+1.
11+
public int[] constructArray(int n, int k) {
12+
int[] ret = new int[n];
13+
ret[0] = 1;
14+
for (int i = 1, interval = k; i <= k; i++, interval--) {
15+
ret[i] = i % 2 == 1 ? ret[i - 1] + interval : ret[i - 1] - interval;
16+
}
17+
for (int i = k + 1; i < n; i++) {
18+
ret[i] = i + 1;
19+
}
20+
return ret;
21+
}
22+
// public int[] constructArray(int n, int k) {
23+
// int []num = new int[n];
24+
// int []diff = new int[n];
25+
// Arrays.fill(diff, -1);
26+
// int x = 1;
27+
// for (int j = 1;j <= n;j ++) {
28+
// num[0] = j;
29+
// int cntk = 0;
30+
// for (int i = 2; i <= n; i++) {
31+
// if (diff[Math.abs(num[x] - num[x - 1])] == -1 && j != i && cntk < k) {
32+
// num[x ++] = i;
33+
// diff[Math.abs(num[x] - num[x - 1])] = 1;
34+
// }
35+
// if (k == cntk) {
36+
// num[x ++] = i;
37+
// if (x == n) {
38+
// return num;
39+
// }
40+
// }
41+
// }
42+
// }
43+
// return num;
44+
// }
45+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package 数据结构.数组与矩阵;
2+
3+
/**
4+
* Created by 周杰伦 on 2018/4/17.
5+
*/
6+
public class 调整矩阵 {
7+
//先转存到一维数组,再重新放到新数组。
8+
//如果行列乘积不相等,直接返回原数组。
9+
public int[][] matrixReshape(int[][] nums, int r, int c) {
10+
int m = nums.length,n = nums[0].length;
11+
int [][] arr = new int[r][c];
12+
int []num = new int[m * n];
13+
if (m * n == r * c) {
14+
int k = 0;
15+
for (int i = 0 ;i < m;i ++) {
16+
for (int j = 0;j < n;j ++) {
17+
num[k ++] = nums[i][j];
18+
}
19+
}
20+
k = 0;
21+
for (int i = 0;i < r;i ++) {
22+
for (int j = 0;j < c;j ++) {
23+
arr[i][j] = num[k ++];
24+
}
25+
}
26+
return arr;
27+
}
28+
return nums;
29+
}
30+
}

0 commit comments

Comments
 (0)