腾讯笔试题,木棍组成多边形判断
1 package com.qyz.test; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.List; 6 import java.util.Scanner; 7 8 public class Solution { 9 10 public static void main(String[] args) { 11 12 Scanner s = new Scanner(System.in); 13 14 int n = s.nextInt(); 15 16 List<Integer> ls = new ArrayList<Integer>(); 17 18 while(n-- > 0){ 19 //表示操作类型 20 int o = s.nextInt(); 21 //木棍长度 22 int l = s.nextInt(); 23 //根据操作对集合增删 24 if(o == 1) 25 ls.add(l); 26 else if(o == 2) 27 //注意,remove有两种实现,一种是删除指定位置,一种是删除第一次出现的元素 28 ls.remove(new Integer(l)); 29 else{ 30 System.out.println("ERR!!!"); 31 break; 32 } 33 int len = ls.size(); 34 //集合长度小于3不能构成多边形 35 if(len < 3){ 36 System.out.println("No"); 37 continue; 38 } 39 //对集合进行排序,升序 40 Collections.sort(ls); 41 int sum = 0; 42 //计算除最后一个元素(最大元素)的和 43 for(int i = 0;i < len - 1;i++) 44 sum += ls.get(i); 45 46 if(sum <= ls.get(len-1)) 47 System.out.println("No"); 48 else 49 System.out.println("Yes"); 50 } 51 s.close(); 52 53 } 54 55 }
该题组要在于对多边形的长度判断,其实很简单,只要有三条线段及以上,且最大边长度小于其余各边的长度和,就可以构成多边形了,添加进list,然后排个序,就可以判断了。