招行信用卡中心笔试

遇到过最友好的笔试了,分享代码攒人品。

第一题:输入一组边长,在优先组成正方形的前提下,求问可以组成正方形和长方形个数各为多少。比如[1,1,1,1,2,2,4,4]可以组成一个正方形和一个长方形
笔试的时候想不起来矩形英语了。。
package xinyongka;
import java.util.*;

public class First {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int times=in.nextInt();
		for(int i=0;i<times;i++) {
			int n=in.nextInt();
			Map<Integer, Integer> map=new HashMap<Integer, Integer>();
			List<Integer> list=new ArrayList<Integer>();
			for(int k=0;k<n;k++) {
				int temp=in.nextInt();
                //map统计边出现次数,list存放边种类
				if(map.containsKey(temp)) {
					int count=map.get(temp);
					count++;
					map.put(temp, count);
				}else {
					map.put(temp, 1);
					list.add(temp);
				}
			}
            //以上都是输入统计
            
			int square=0;//正方形
			int ju=0;//矩形
			for(int j=0;j<list.size();j++) {
				int k=list.get(i);
				if(map.get(k)>4) {
					int num=map.get(k);
					square=square+num/4;
					map.put(k, num%4);
				}
				if(map.get(k)>2) {
					int num=map.get(k);
					ju=ju+num/2;
					//map.put(k, num%2);
				}
			}
			System.out.println(square +" "+ju/2);
		}
	}
}
第二题核心代码:输入一个数组,是否可以通过数组内数据交换位置使其符合a[i]%2==i%2,i从1开始。如果可以输出交换次数,不可以则输出-1。
public static int countExchTimes(int[] input) {
		int n=input.length;
		if(n==0) return -1;
		if(n==1) {
			if(input[0]%2==1) return 0;
			else return -1;
		}
		int count1=0,count2=0;//统计奇数位和偶数位不符合要求的数字个数
		for(int i=0;i<n;i++) {
			if(i%2==1 && input[i]%2==0) count1++;
			if(i%2==0 && input[i]%2==1) count2++;
		}
		if(count1!=count2) return -1;
		else return count1;
	}




#笔试题目##招商银行#
全部评论
可选择题对前端太不友好了🤣
1 回复 分享
发布于 2020-09-22 12:20
编程十分钟写完,选择题好多不会😂
1 回复 分享
发布于 2020-09-22 16:31
确实,招行笔试这编程题难度属实没想到。。。
点赞 回复 分享
发布于 2020-09-22 12:03
看样子AK的挺多的
点赞 回复 分享
发布于 2020-09-22 12:47
楼主是什么时候投的呢,我怎么还是筛选状态
点赞 回复 分享
发布于 2020-09-22 16:00
请问题目是什么呢
点赞 回复 分享
发布于 2020-09-23 09:03

相关推荐

点赞 评论 收藏
分享
数学转码崽:一直给我推,投了又不理,理了又秒挂
点赞 评论 收藏
分享
会飞的猿:本人来了,手一抖转错了,我是学生,能还给我吗
点赞 评论 收藏
分享
评论
2
12
分享

创作者周榜

更多
牛客网
牛客企业服务