当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

轩辕互动-1.求三个整数中第二大的数2.整型数组的平衡点

发表于: 2012-01-06   作者:bylijinnan   来源:转载   浏览:
摘要: import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ExoWeb { public static void main(String[] args) { ExoWeb ew=new ExoWeb(); System.out.pri
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class ExoWeb {

	public static void main(String[] args) {
		ExoWeb ew=new ExoWeb();
		
		System.out.println(ew.findSecondIn3Item(2, 5, 3));
		
		int[][] aa={
				{1,1,1,1,2,1},
				{1, 1, 0, 0, 1, 1},
				{1,2,0,2,1},
				{1,-1,1},
				{1,8,7,8,25,4,49,30,23},
				{1, 3, 5, 7, 8, 25, 4, 20},
		};
		for(int[] each:aa){
			System.out.print(Arrays.toString(each)+",balance points=");
			List<Integer> points=ew.findBalancePoint(each);
			for(int i:points){
				System.out.print(i+",");
			}
			System.out.println();
		}
	}

	/*
	 * find the mid item in THREE integers
	 */
	public int findSecondIn3Item(int a,int b,int c){
		//could this  be faster than sorting?
		int max=(a>b?a:b)>c?(a>b?a:b):c;
		int min=(a<b?a:b)<c?(a<b?a:b):c;
		int mid=a^b^c^max^min;	//equals to a+b+c-max-min
		/*
		int[] x=new int[3];
		x[0]=a;
		x[1]=b;
		x[2]=c;
		for(int i=0;i<x.length;i++){
			for(int j=0;j<x.length-i-1;j++){
				if(x[j]>x[j+1]){
					int temp=x[j];
					x[j]=x[j+1];
					x[j+1]=temp;
				}
			}
		}
		int mid=x[1];
		*/
	
		return mid;
	}
	
	/*
	 * 平衡点:比如int[] numbers = {1,3,5,7,8,25,4,20}; 25前面的总和为24,25后面的总和也是24,25这个点就是平衡点;
	 * 假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点 
	 * 要求1:返回任何一个平衡点
	 * 要求2:要求输入的数组可能是GB级
	 * solution to 1. use List<Integer>
	 * solution to 2. i cannot figure out a elegant solution. GB,,so you just cann't sum all the data in array
	 */
	public List<Integer> findBalancePoint(int[] a){
		List<Integer> points=new ArrayList<Integer>();
		int total=0;
		int firstSum=0;
		for(int i=0,len=a.length;i<len;i++){//若输入的数组是GB级,全部数组求和不可取
			total+=a[i];
		}
		for(int i=0,len=a.length;i<len;i++){
			if(firstSum==total-a[i]-firstSum){
				points.add(a[i]);
			}
			firstSum+=a[i];
		}
		return points;
	}
}

轩辕互动-1.求三个整数中第二大的数2.整型数组的平衡点

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
上机内容:C++程序的编写和运行 上机目的:掌握简单C++程序的编辑、编译、连接和运行的一般过程 我
/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作
/* * 程序的版权和版本声明部分: * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved
1. 整型 整型是一个或多个数字序列,有正负之分。可以表示为8进制和16进制,八进制前面加0,16进制
【解法一】 我们先假设元素的数量不大,例如在几千个左右,在这种情况下,那我们就排序一下吧。在这
题目:输入三个整数,把这三个数由小到大输出。 程序分析:输入三个数i,j,k,进行比较,把最小的值
/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者: 霍雨佳 * 完成日
/*输入三个整数求最大值*/ #include <iostream> using namespace std; int main() { int a,b,
/* * 烟台大学未来工程师协会/CSDN俱乐部 算法达人修炼营 实践报告 * Copyright (c) 2011, 烟台大学
. * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者: 李蒙 * 完成日期:
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号