8.28华为笔试

第一题:
采用暴力解:
for (int i = 1; i < (p/3+1); i++) {
    for (int j = i; j < (p/2+1); j++) {
        if ((i*i + j*j) == (p-i-j)*(p-i-j)) {
            count++;
        }
    }
}
第二题:
左神算法课上求矩阵中岛屿数量问题(也是leetcode200),稍微改编一下就行了:
这道题我没过,当时在helper()函数中,条件没有判断正确,可急skr我了
我这还没加多次输入.............可真急skr我了.......
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;


public class Test4 {
	
	public static int count = 0;
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int[] input = new int[6];
		
		int[][] target = {{1,2,3,4,5},
				{11,12,13,14,15},
				{21,22,23,24,25},
				{31,32,33,34,35},
				{41,42,43,44,45}};
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();


			for (int i = 0; i < 6; i++) {
				input[i] = sc.nextInt();
				map.put(input[i], 1);
			}
			int m = 0;
			int n = 0;
			boolean isHave = false;

	        for ( m = 0; m < target.length; m++) {
				for (n = 0; n < target[0].length; n++) {
					if (map.containsKey(target[m][n])) {	
						helper(target,m,n,map);
						if (count == 6) {
							System.out.println(1);
						}else {
							System.out.println(0);
						}
						isHave = true;
						break;
					}
				}
				if (isHave) {
					break;
				}
			}


	}
	private static void helper(int[][] target,int i,int j,Map<Integer, Integer> map) {
		if (i<0 || i>=target.length || j<0 || j>= target[0].length || !map.containsKey(target[i][j])) {
			return;
		}

		if (map.containsKey(target[i][j])) {
			count++;
			target[i][j] = -1;
		}
		helper(target, i-1, j, map);
		helper(target, i, j+1, map);
		helper(target, i+1, j, map); 		
		helper(target, i, j-1, map);      
	}

}


第三题没看.........要gg了
#华为##笔试题目#
全部评论
第一题这种方法不是AC吧?
点赞 回复 分享
发布于 2019-08-28 22:25
第一题中(p-i-j)*(p-i-j)用Math.pow((p-i-j),2)就过不了。。。。。。。。急skr我了
点赞 回复 分享
发布于 2019-08-28 22:09
为什么我的进度还是在简历筛选中? 你都已经笔试过了。。。
点赞 回复 分享
发布于 2019-08-28 22:12
第一题居然这么简单😂,想了半天没做出来
点赞 回复 分享
发布于 2019-08-28 22:16
老哥,第三题怎么解啊
点赞 回复 分享
发布于 2019-09-09 14:56

相关推荐

评论
2
22
分享
牛客网
牛客企业服务