高分求解基本的java算法题

问题描述

例如:int[][] a={{1,2,3,4,5},{1,2,3,4,6},{1,2,3,4,7}};行合并的规则为:两行中只相差一个数字,就把相差的数字进行合并,例如将a进行行合并处理后,变为:int[][] b={{1,2,3,4,11},{1,2,3,4,7}};再对 b进行行合并后,变为:int[][] c={{1,2,3,4,18}};请用java写出能实现合并规则,行数最多可能为5万。 问题补充:jobar 写道

解决方案

试写一个:import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;import org.junit.Test;public class CombinArray {public static ArrayList<Integer> combine(ArrObject theArr,ArrObject otherArr) {List<Integer> one = theArr.getArr();List<Integer> other = otherArr.getArr();ArrayList<Integer> combined = new ArrayList<Integer>();int noEqualCount = 0;int equalCount = 0;if (one.size() == other.size()) {for (int i = 0; i < one.size(); i++) {if (one.get(i) - other.get(i) != 0) {noEqualCount++;combined.add(one.get(i) + other.get(i));} else {equalCount++;combined.add(one.get(i));}}}// Equal and have only one difference can combine to one.if (noEqualCount == 1 || equalCount == one.size()) {System.out.println("middle:" + combined);return combined;}return null;}@Testpublic void testCombine() {ArrObject arr1 = new ArrObject(Arrays.asList(1, 2, 3));ArrObject arr2 = new ArrObject(Arrays.asList(1, 2, 3));ArrObject arr3 = new ArrObject(Arrays.asList(1, 2, 8));ArrObject arr4 = new ArrObject(Arrays.asList(1, 3, 8));ArrObject arr5 = new ArrObject(Arrays.asList(1, 3, 8));ArrObject arr6 = new ArrObject(Arrays.asList(3, 8, 1));ArrayList<ArrObject> arrayList = new ArrayList<ArrObject>(Arrays.asList(arr1, arr2, arr3, arr4, arr5, arr6));ArrayList<ArrObject> resultList = new ArrayList<ArrObject>();for (int i = 0; i < arrayList.size(); i++) {ArrObject one = arrayList.get(i);ArrObject other = arrayList.get((i + 1) / arrayList.size());ArrayList<Integer> result = combine(one, other);if (result != null && !resultList.contains(result)) {arrayList.add(new ArrObject(result));arrayList.remove(one);arrayList.remove(other);resultList.add(new ArrObject(result));}print(arrayList);}System.out.println("==========result==========");print(resultList);}private void print(ArrayList<ArrObject> copyofList) {System.out.println("finished:");for (ArrObject arrObject : copyofList) {System.out.println(arrObject.getArr());}}}class ArrObject {private List<Integer> arr;private boolean combine;public ArrObject(List<Integer> arr) {super();Collections.sort(arr);this.arr = arr;}public boolean isCombine() {return combine;}public void setCombine(boolean combine) {this.combine = combine;}public List<Integer> getArr() {return arr;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((arr == null) ? 0 : arr.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;ArrObject other = (ArrObject) obj;if (arr == null) {if (other.arr != null)return false;} else if (!arr.equals(other.arr))return false;return true;}}
解决方案二:
暂时思路,先将相同的列去掉得到一个新的矩阵,然后求出这个矩阵的逆矩阵,将这两个矩阵补充为相同维数的矩阵(没有的用0补充),然后求他们的差,再根据矩阵的0来决策
解决方案三:
我觉得顺序无关紧要,可以排序,这样的算吗1,2,3 跟1,2。
解决方案四:
两行中只相差一个数字,1,2,3,4 和 5,3,2,1算不算?

时间: 2024-09-13 08:48:23

高分求解基本的java算法题的相关文章

java算法题,公司的笔试题

问题描述 java算法题,公司的笔试题 suppose you have N cakes, N is an interger>0 // at each time, you can either eat 1 cake, or 2 cakes or 3 cakes // PROBLEM: How many ways can you eat all N cakes // for example, N = 4, (1,2,1) and (1,1,2) are considered to be diffe

百度知道-【java算法题】凑凑凑凑凑凑字数

问题描述 [java算法题]凑凑凑凑凑凑字数 题目:标题:猜字母???把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串.???接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母.??得到的新串再进行删除奇数位置字母的动作.如此下去,最后只剩下一个字母,请写出该字母./-----------------------------------从百度知道查看但是不懂 1024 和他的思维求大神解惑 /----------------------

java算法题

问题描述 写一个算法:有10000000种不同的整型数.发现其最大的100要素.实施时应执行速度的优化. 解决方案 import java.util.ArrayList;public class createDir {private static int num[] =new int [10000000];private static ArrayList<Object> ans=null;public static void main(String[] arg){for(int i = 0;i

被一道JAVA算法题难住了,请各位帮忙看下。

问题描述 数组 C[I] = A[I] + B[I] / 1,000,000.例如 A 和 B: A[0] = 0B[0] = 500,000 A[1] = 1B[1] = 500,000 A[2] = 2B[2] = 0 A[3] = 2 B[3] = 0 A[4] = 3B[4] = 0 A[5] = 5B[5] = 20,000则 C: C[0] = 0.5 C[1] = 1.5 C[2] = 2.0 C[3] = 2.0 C[4] = 3.0 C[5] = 5.02寻找一对下标(P, Q

java 算法题 大侠们 帮帮忙 万分感谢

问题描述 有一个文本文件,有一千万条数据,每行是一个单词,如何统计出,最早出现10次的10个单词 解决方案 解决方案二:最早出现10次的10个单词?那貌似只能是最普通的linearsearchalgorithm解决方案三:用VECTORfor每次检查,没有就赋值为1,有则++,最后再FOR<10这法有点笨,不过应该行吧,就是一千万,多了点解决方案四:你用一个循环去查找空格位置个数啊,一个单词用一个空格符作为结尾来区别,找到一个循环变量i,自增加1:如果你要找到最先出现的十个单词,用一个数组arr

对象-高分求解JAVA疑难,希望能得到解答

问题描述 高分求解JAVA疑难,希望能得到解答 public Flight findFlight(String num) { for (int i=0;i<flightList.size();i++) if (flightList.get(i).getFlightnum().equals(num)) { return flightList.get(i); } return null; } /* * public boolean addFlight - passing in a parameter

关于java问题-求解java编程题,图片是题目

问题描述 求解java编程题,图片是题目 报错的咋解决,求解,帮帮忙,速度下,题目在下面, 解决方案 flowlayout没有实现listener接口 解决方案二: 定位到红杠报错的位置,使用Eclipse快速提示快捷键ctrl+1(数字1),就能知道错误原因了. 解决方案三: 我可以说我看不清楚吗?

时间复杂度-求解一道acm算法题,在线等!!

问题描述 求解一道acm算法题,在线等!! 有N个D维向量,求解每个向量到其他向量的最短距离. 只要求解每个向量到其他向量的最短距离就可以了. 距离采用欧式距离表示. 时间复杂度近似于O(DN) 解决方案 http://zhidao.baidu.com/link?url=Xt0N7upNLbk_Ik4uBxPx6Nl2n3JVp_ry9Of6YAnvQiVIkwuCXuiIPSoanHbeaf07M8zjTy-qpD4A4iFe1dXDuq

求解一个JAVA算法,关于固定地图路径的

问题描述 求解一个JAVA算法,关于固定地图路径的 求解,大神在哪里哇,我在想是不是要用A星算法的,不过A星算法不太适应这个地图,黑色的方框表示障碍物,不能穿过,空心圆表示可通过区域. 解决方案 可以考虑蚁群算法,,,,,,,,,,,,,, 解决方案二: 图片奉上 解决方案三: 在线等啊,急急急急急急急急 解决方案四: 在线等啊,急急急急急急急急 解决方案五: 要怎么用JAVA来实现这个算法,求解 解决方案六: 要怎么用JAVA来实现这个算法,求解