`
jythoner
  • 浏览: 608966 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

轩辕互动笔试

阅读更多
刚去轩辕互动面试,linux下三道题

1个半小时的,两个15分钟的

下面是两道需要半个小时的题

1.平衡点问题
平衡点:比如int[] numbers = {1,3,5,7,8,25,4,20}; 25前面的总和为24,25后面的总和也是24,25这个点就是平衡点;假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点
要求:返回任何一个平衡点
public class Equity{

public static int equity(int[] numbers){
int total=0;

for(int i=0;i<numbers.length;i++){
total+=numbers[i];
}

int frontSum = 0;

for(int i=0;i<numbers.length;i++){
int backSum = total - frontSum - numbers[i];
System.out.println(i + "------" + frontSum);
System.out.println(i + "------" + backSum);
if(frontSum == backSum) { 
	return i;
}
frontSum += numbers[i];
}

return -1;
}
}



支配点问题:
支配数:数组中某个元素出现的次数大于数组总数的一半时就成为支配数,其所在位序成为支配点;比如int[] a = {3,3,1,2,3};3为支配数,0,1,4分别为支配点;
要求:返回任何一个支配点
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Dominator {

@SuppressWarnings("unchecked")
public static int dominator(int[] a) {
if(a == null || a.length == 0)
return -1;

List intList = new ArrayList();

for(int i=0; i<a.length; i++) {
intList.add(a[i]);
}

System.out.println(intList);

Collections.sort(intList);

System.out.println(intList);

int maxCount = 0;
int maxCountElement = 0;
int maxCountTemp = 0;
int maxCountElementTemp = (Integer)intList.get(0);
for(int i=0; i<intList.size(); i++) {
if(intList.get(i).equals(maxCountElementTemp)) {
	maxCountTemp++;
} else {
	if(maxCountTemp > maxCount) {
	maxCountElement = maxCountElementTemp;
	maxCount = maxCountTemp;
	}
	maxCountElementTemp = (Integer)intList.get(i);
	maxCountTemp = 1;
}
System.out.println(i + "---------" + maxCount);
System.out.println(i + "---------" + maxCountElement);
System.out.println(i + "---------" + maxCountTemp);
System.out.println(i + "---------" + maxCountElementTemp);
}

if(maxCountTemp > maxCount) {
maxCountElement = maxCountElementTemp;
maxCount = maxCountTemp;
}

if(maxCount > a.length/2) {
for(int i=0; i<a.length/2; i++) {
	if(a[i] == maxCountElement) {
	return i;
	}
}
}

return -1;
}
}


0
3
分享到:
评论
8 楼 爱园园真是太好了 2016-12-30  
package zj.hy.love;


/**
 * 平衡点:比如int[] numbers = {1,3,5,7,8,25,4,20};
 * 25前面的总和为24,25后面的总和也是24,25这个点就是平衡点;
 * 假如一个数组中的元素,其前面的部分等于后面的部分,
 * 那么这个点的位序就是平衡点 
 * 要求:返回任何一个平衡点 
 * @author ZJ
 * @since 2016-12-30
 */
public class Ques20161230_01 {
	
	
	/**
	 * 计算一个数字数组的平衡点<br>
	 * 返回平衡点的位置与元素
	 * @param array
	 * @return
	 */
	public String getBalancePoint_1(int[] array){
		
		int size = array.length;
				
		int suffixSum = 0;//后缀和		
		for (int i = 0; i < size; i++) {
			suffixSum += array[size-i-1];
			int prefixSum = 0;//前缀和
			for (int j = 0; j < size-i-2; j++) {
				prefixSum += array[j];
			}
			if(suffixSum == prefixSum){
				return "平衡点为:"+(size-i-2)+",元素为"+array[size-i-2];
			}
		}
		
		return "没有平衡点!";
	}
	
    public String getBalancePoint_2(int[] array){
		
    	int sum = 0;
    	int size = array.length;
    	int prefixSum = 0;//前缀和
    	int suffixSum = 0;//后缀和
    	for (int i = 0; i < size; i++) {
			sum += array[i];
		}    	
    	for (int i = 0; i < size-1; i++) {
    		prefixSum +=array[i];
    		suffixSum = sum - prefixSum -array[i+1];
    		if(prefixSum == suffixSum){
    			return "平衡点为:"+(i+1)+",元素为"+array[i+1];
    		}
		}
		return "没有平衡点!";
	}
	
	public static void main(String[] args) {

		Ques20161230_01 ques = new Ques20161230_01();
		int[] numbers = {1,3,5,7,8,25,4,20,9,20};
		String point = ques.getBalancePoint_2(numbers);
		System.out.println(point);
	}
}

7 楼 爱园园真是太好了 2016-12-30  
package zj.hy.love;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;


/**
 * 支配点问题: 
 * 支配数:数组中某个元素出现的次数大于数组总数的一半时就成为支配数,
 * 其所在位序成为支配点;比如int[] a = {3,3,1,2,3};
 * 3为支配数,0,1,4分别为支配点; 
 * 要求:返回任何一个支配点 
 * @author ZJ
 * @since 2016-12-29
 */
public class Ques20161230_02 {
	
	/**
	 * 传入一个数字型的数组,<br>
	 * 返回key为数组支配数,
	 * value 为该数组所有支配点的Map<br>
	 * 其中多有支配点以英文逗号分隔,例如:2,3,5
	 * @param array
	 * @return
	 */
	public Map<Integer,String> getControlPoint(int[] array){
		
		Map<Integer,String> pointMap = new HashMap<Integer, String>();
		if(array == null|| array.length == 0){
			return pointMap;
		}
		int[] tempArray = new int[array.length];
		System.arraycopy(array, 0, tempArray, 0, array.length);
		//tempArray = array.clone(); clone 方法速度慢效率比较低
		Arrays.sort(tempArray);//将数组排序
		int temp = 0;
		int count = 0;	
		int controlElement = 0;
		// 寻找支配数
		for (int i = 0; i < tempArray.length; i++) {			
			if(temp == tempArray[i]){
				if(++count > array.length/2){
					controlElement = temp;
					break;
				}
			}else{
				count = 1;
				temp = tempArray[i];				
			}			
		}	
		//获取支配点
		StringBuilder str = new StringBuilder();
		for (int i = 0; i < array.length; i++) {					
			if(array[i] == controlElement){
				str.append(i+",");
			}
		}
		if(!str.toString().isEmpty()){
			String index = str.toString().substring(0, str.length()-1);	
			pointMap.put(controlElement, index);
		}
		return pointMap;
	}
	
	public static void main(String[] args) {
		
		Ques20161230_02 ques = new Ques20161230_02();
		int[] a = {3,3,1,2,3};
		Map<Integer, String> controlMap= ques.getControlPoint(a);
		Set<Integer> keySet = controlMap.keySet();
		for (Integer i : keySet) {
			System.out.println("支配数为:"+i+",其所有的支配点为:"+controlMap.get(i));
		}
	}
}

6 楼 爱园园真是太好了 2016-12-30  


package zj.hy.love;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;


/**
* 支配点问题:
* 支配数:数组中某个元素出现的次数大于数组总数的一半时就成为支配数,
* 其所在位序成为支配点;比如int[] a = {3,3,1,2,3};
* 3为支配数,0,1,4分别为支配点;
* 要求:返回任何一个支配点
* @author ZJ
* @since 2016-12-29
*/
public class Ques20161230_02 {

/**
* 传入一个数字型的数组,<br>
* 返回key为数组支配数,
* value 为该数组所有支配点的Map<br>
* 其中多有支配点以英文逗号分隔,例如:2,3,5
* @param array
* @return
*/
public Map<Integer,String> getControlPoint(int[] array){

Map<Integer,String> pointMap = new HashMap<Integer, String>();
if(array == null|| array.length == 0){
return pointMap;
}
int[] tempArray = new int[array.length];
System.arraycopy(array, 0, tempArray, 0, array.length);
//tempArray = array.clone(); clone 方法速度慢效率比较低
Arrays.sort(tempArray);//将数组排序
int temp = 0;
int count = 0;
int controlElement = 0;
// 寻找支配数
for (int i = 0; i < tempArray.length; i++) {
if(temp == tempArray[i]){
if(++count > array.length/2){
controlElement = temp;
break;
}
}else{
count = 1;
temp = tempArray[i];
}
}
//获取支配点
StringBuilder str = new StringBuilder();
for (int i = 0; i < array.length; i++) {
if(array[i] == controlElement){
str.append(i+",");
}
}
if(!str.toString().isEmpty()){
String index = str.toString().substring(0, str.length()-1);
pointMap.put(controlElement, index);
}
return pointMap;
}

public static void main(String[] args) {

Ques20161230_02 ques = new Ques20161230_02();
int[] a = {3,3,1,2,3};
Map<Integer, String> controlMap= ques.getControlPoint(a);
Set<Integer> keySet = controlMap.keySet();
for (Integer i : keySet) {
System.out.println("支配数为:"+i+",其所有的支配点为:"+controlMap.get(i));
}
}
}
5 楼 爱园园真是太好了 2016-12-30  
鄙人刚开始看这个每日一题,下面是我写的这个找平衡点的代码
4 楼 爱园园真是太好了 2016-12-30  
引用


第一个逻辑不是很清楚,第二个代码有问题,吧数组排序了以后序号还能和原来一抹一样么?
3 楼 laolinshi 2010-05-24  
zuojc7 写道
我认为 不应该是这么写的 呵呵


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Dominator {
public static int getDominator(int[] a){
if(a == null && a.length == 0){
return -1;
}
List<Integer> intList = new ArrayList<Integer>();
for (int  n : a) {
intList.add(n);
}
Collections.sort(intList);
int count =1;
for (int i =0; i < a.length;i++) {
if(i+1 < a.length){
if(intList.get(i) == intList.get(i+1)){
count++;
if(count > a.length/2){
return i;
}
}else{
count = 1;
}
}
}
return -1;
}
public static void main(String[] args) {
int[] a = {3,3,1,2,3};
System.out.println(getDominator(a));
}
}

你打印出来的数组元素位置不对啊
2 楼 ryan.liu 2010-04-22  
平衡点
int i=0;
int j=numbers.length-1;
int frontSum=0;
int backSum=0;
while(i<=j) {
   if (frontSum<=backSum)
      i++;
   else
      j--;
}
return (frontSum==backSum) ? numbers[i] : -1;
1 楼 zuojc7 2010-04-20  
我认为 不应该是这么写的 呵呵


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Dominator {
public static int getDominator(int[] a){
if(a == null && a.length == 0){
return -1;
}
List<Integer> intList = new ArrayList<Integer>();
for (int  n : a) {
intList.add(n);
}
Collections.sort(intList);
int count =1;
for (int i =0; i < a.length;i++) {
if(i+1 < a.length){
if(intList.get(i) == intList.get(i+1)){
count++;
if(count > a.length/2){
return i;
}
}else{
count = 1;
}
}
}
return -1;
}
public static void main(String[] args) {
int[] a = {3,3,1,2,3};
System.out.println(getDominator(a));
}
}

相关推荐

    轩辕剑online、轩辕剑4中PLY模型读取程序源码

    《轩辕剑online、轩辕剑4中PLY模型读取程序源码》 PLY(Polygon File Format)是一种用于存储3D模型的文件格式,由斯坦福大学开发,常用于3D建模和图形处理领域。该文件格式简洁且易于解析,包含了模型的顶点、面...

    趴站蹲点\轩辕剑V3.31.zip

    在《轩辕剑V3.31》中,玩家将扮演主角,与其他角色互动,解决谜题,与敌人战斗。游戏采用了回合制战斗系统,玩家可以根据角色的属性和技能策略性地进行战斗。此外,游戏还包含了丰富的物品系统、技能树和角色养成...

    轩辕剑枫之舞(Dosbox运行)

    《轩辕剑外传 枫之舞》是由大宇资讯制作的角色扮演游戏,于1995年1月6日在台湾发行。这款游戏是轩辕剑系列的首部外传作品。游戏背景设定在战国时期,讲述了墨子弟子辅子彻发现鬼谷子弟子蜀桑子的阴谋后,踏上江湖的...

    轩辕剑java代码

    【标题】:“轩辕剑java代码”揭示了这个压缩包文件主要包含与“轩辕剑”相关的Java编程源代码。轩辕剑,作为一个历史悠久的中国神话传说中的宝剑,可能在此处指的是一个软件项目或游戏的名称,而这个项目或游戏的...

    手机游戏——轩辕豪侠传-破解版.jar

    最新的手机游戏——轩辕豪侠传-破解版.jar

    轩辕7004硬盘录像机软件

    本设备是专为安防领域设计的一款数字监控产品,它采用了嵌入式处理器和嵌入式操作系统,结合了IT 领域各项最新技术,如视音频压缩/解压缩、大容量硬盘记录、TCP/IP 网络等技术,代码固化在FLASH 中,使得系统运行更...

    轩辕9500四路软件.zip

    轩辕9500四路软件.zip是一个压缩包文件,包含了专为轩辕品牌的四路采集卡设计的Windows驱动程序和相关工具。这个采集卡是用于监控系统中的,它利用同轴电缆作为传输媒介来捕获和处理视频信号。同轴通信是一种传统而...

    轩辕剑online、轩辕剑4中PLY模型读取工具

    可以读取显示轩辕剑online、轩辕剑4、苍之涛里面的PLY模型。

    【站长亲测】轩辕剑一键安装即玩服务端游戏程序+充值后台

    轩辕剑一键安装即玩服务端游戏程序+充值后台

    轩辕4路监控卡驱动

    【轩辕4路监控卡驱动】是一款专为四通道监控设备设计的硬件驱动程序,由轩辕品牌在2012年6月发布。该驱动程序的主要功能是为4路监控采集卡提供必要的支持,确保视频数据的稳定传输和高质量的图像显示。在监控系统中...

    轩辕剑5完全說明手册

    轩辕剑5完全說明手册 轩辕剑5完全說明手册

    轩辕剑3外传天之痕完全手册

    轩辕剑3外传天之痕完全手册

    轩辕剑网络版经验显示工具

    仅显示轩辕剑网络版游戏中的经验数值 支持双开,支持蚩尤再现 不提供外挂功能

    轩辕旅行网站源码,全源码

    【轩辕旅行网站源码解析】 本项目名为“轩辕旅行网站”,是基于C#编程语言开发的一款在线旅游服务平台的源代码。C#是一种现代化、类型安全的面向对象编程语言,广泛应用于Windows平台上的软件开发,尤其是.NET框架...

    截取轩辕剑6的3D模型

    截取轩辕剑6的3D模型 《轩辕剑陆》正式版(需激活)或试玩版(←我不是来卖萌的,强迫症一定要列全,桑不起…) (2) GameAssassin,游戏模型截取软件。

    通过MAX SDK获取轩辕剑PLY运动矩阵

    通过MAX SDK获取轩辕剑PLY运动矩阵;

    轩辕剑打码程序

    9900炮 游戏程序的软件版打码器 适用少数复制的版本

    VC游戏源码 轩辕剑

    我编写的游戏全部源码,内部包含地图编辑器源码。

    VC轩辕剑天之痕【包含图片视频音乐源代码】PART.2

    VC轩辕剑天之痕【包含图片视频音乐源代码】PART.2

    轩辕Windows服务安装与卸载工具 v1.1

    安装环境:需要安装.net4.0轩辕Windows服务安装与卸载工具 更新日志:更新时间:2016-11-071、修复打开文件选择器在64位中不能正常打开2、修复安装多个 windows服务只能安装第一个的问题3、修复其他小bug

Global site tag (gtag.js) - Google Analytics