英雄会之在线笔试面试,等你来挑战(更新至2013/5/22)

v_JULY_v
博客专家认证
2013-03-20 02:38:03
加精
阳春三月,又到了找工作的季节,


英雄会之在线模拟真实笔试面试环境:http://hero.pongo.cn/,等你来挑战!


...全文
9634 147 打赏 收藏 转发到动态 举报
写回复
用AI写文章
147 条回复
切换为时间正序
请发表友善的回复…
发表回复
groovy2007 2013-04-29
  • 打赏
  • 举报
回复
做对了能帮助推荐工作吗?
逆袭高富帅 2013-04-28
  • 打赏
  • 举报
回复
楼上全是高手。。
v_JULY_v 2013-04-23
  • 打赏
  • 举报
回复
引用 144 楼 Kattou 的回复:
package cn.com.test.csdn; import java.util.Scanner; public class No1 { private static Integer m;// 行数 private static Integer n;// 列数 private static Integer t;// 要查找的数 private st……
你这是解答杨氏矩阵吧,不过,建议用插入代码的格式贴代码哈:-)
Kattou 2013-04-22
  • 打赏
  • 举报
回复
package cn.com.test.csdn; import java.util.Scanner; public class No1 { private static Integer m;// 行数 private static Integer n;// 列数 private static Integer t;// 要查找的数 private static boolean flag;// 判断是否找到 public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入行数:"); m = sc.nextInt(); System.out.println("请输入列数:"); n = sc.nextInt(); System.out.println("请输入要查找的数:"); t = sc.nextInt(); Integer str[][] = new Integer[m][n]; int g = 0; for (int i = 0; i < str.length; i++) { for (int j = 0; j < str[i].length; j++) { g++; str[i][j] = g; System.out.print(str[i][j] + "\t"); if (g % 3 == 0) { System.out.println(); } if (g == t) { flag = true; } } } System.out.println(flag); } }
v_JULY_v 2013-04-20
  • 打赏
  • 举报
回复
引用 142 楼 taolei 的回复:
题目应该包含测试数据的取值范围、时间限制和内存限制等条件,尤其是前者。不同的条件限制会关系到算法的选择。
是的,很不错的建议!目前来说,题目的要求还是尽量放低,降低门槛以让更多的人可以参与,后续会不断完善题目,包括你说的测试数据的取值范围,时间限制和内存限制等条件。 多谢,欢迎持续反馈:-)
3124212费金翔 2013-04-19
  • 打赏
  • 举报
回复
太深奥了,我不懂。。
taolei 2013-04-19
  • 打赏
  • 举报
回复
题目应该包含测试数据的取值范围、时间限制和内存限制等条件,尤其是前者。不同的条件限制会关系到算法的选择。
v_JULY_v 2013-04-18
  • 打赏
  • 举报
回复
引用 139 楼 ZZZ5512536 的回复:
这个有意思.有空玩玩
明日不如今日,等空不如即可:-)
ZZZ5512536 2013-04-17
  • 打赏
  • 举报
回复
这个有意思.有空玩玩
十年彩虹 2013-04-11
  • 打赏
  • 举报
回复
v_JULY_v 2013-04-09
  • 打赏
  • 举报
回复
昨天的题 1024 求连续子数组的最大和http://hero.pongo.cn/Question/Details?ID=27&ExamID=27
v_JULY_v 2013-04-07
  • 打赏
  • 举报
回复
引用 130 楼 v_JULY_v 的回复:
引用 129 楼 v_JULY_v 的回复:引用 126 楼 ptjian 的回复:暂不支持C/C++语言编写, 最快这两天会上线支持C/C++。 今晚,英雄会开始正式上线支持C/C++了,从此,你不用再受语言所限,还等什么呢?猛戳→查找最小的K个数http://t.cn/zT2J85J,二叉树的深度http://t.cn/zT2J85i (哈哈)! ……
这两道题目出的稍微有点小问题,明天规范下出题规则。
clever101 2013-04-03
  • 打赏
  • 举报
回复
不错的活动,先留个记号!
u010147864 2013-04-03
  • 打赏
  • 举报
回复
v_JULY_v 2013-04-02
  • 打赏
  • 举报
回复
引用 129 楼 v_JULY_v 的回复:
引用 126 楼 ptjian 的回复:暂不支持C/C++语言编写,

最快这两天会上线支持C/C++。


今晚,英雄会开始正式上线支持C/C++了,从此,你不用再受语言所限,还等什么呢?猛戳→查找最小的K个数http://t.cn/zT2J85J,二叉树的深度http://t.cn/zT2J85i (哈哈)!
v_JULY_v 2013-04-02
  • 打赏
  • 举报
回复
引用 126 楼 ptjian 的回复:
暂不支持C/C++语言编写,
最快这两天会上线支持C/C++。
Mourinho 2013-04-01
  • 打赏
  • 举报
回复
纠正下

	static String rightOffset(String src, int offset) {
		char[] arr = src.toCharArray();
		reserver(arr, 0, offset);
		reserver(arr, offset, arr.length);
		reserver(arr, 0, arr.length);
		return String.valueOf(arr);
	}
Mourinho 2013-04-01
  • 打赏
  • 举报
回复
第3题的解法一在编程珠玑上看到过。 用java写了个

public class Test03 {

	public static void main(String[] args) {
		String value = "abcdefgh";
		System.out.println(rightOffset(value, 4));
	}

	static String rightOffset(String src, int offset) {
		char[] arr = src.toCharArray();
		reserver(arr, 0, 4);
		reserver(arr, 4, arr.length);
		reserver(arr, 0, arr.length);
		return String.valueOf(arr);
	}

	private static char[] reserver(char[] arr, int start, int end) {
		for(int i = 0;i < (end - start) / 2;++i) {
			char temp = arr[start + i];
			arr[start + i] = arr[end - i - 1];
			arr[end - i - 1] = temp;
		}
		return arr;
	}
}
「已注销」 2013-03-31
  • 打赏
  • 举报
回复
暂不支持C/C++语言编写,
LZC_456 2013-03-29
  • 打赏
  • 举报
回复
查阅资料后得知,有个动态规划的方法,研究了一下,如下


import java.util.Scanner;

public class PlusArr2 {
 public static void main(String[] args) {

 // double[] srcArr = { 0.1, 10, 20, 2, 0.1, 0.7, -0.4, 0.1, -0.8 };
  System.out.println("input numbers :");
  Scanner r = new Scanner(System.in);
  String input = r.nextLine(); 
  String[] strSplit = input.split(",");  
  int len = strSplit.length;
  double[] srcArr = new double[len];  
  for (int i = 0; i < strSplit.length; i++) {
   srcArr[i] = Double.parseDouble(strSplit[i]);
  }
  /************************/
  
  double[] maxArr = new double[len];
  double[] minArr = new double[len];
  double maxValue = srcArr[0];
  maxArr[0] = srcArr[0];
  minArr[0] = srcArr[0];
  int startIndex = 0;
  int endIndex = 0;
  for (int i = 1; i < len; i++) { 
   
   maxArr[i] = Math.max(
     Math.max(srcArr[i], maxArr[i - 1] * srcArr[i]),
     minArr[i - 1] * srcArr[i]);
   minArr[i] = Math.min(
     Math.min(srcArr[i], maxArr[i - 1] * srcArr[i]),
     minArr[i - 1] * srcArr[i]);
   maxValue = Math.max(maxValue, maxArr[i]);
   
   maxValue = Math.max(maxValue, maxArr[i]);
 
   if (maxValue <= maxArr[i]) {
    endIndex = i;
    double s1 = maxArr[i - 1] * srcArr[i];
    if (srcArr[i] > s1) {
     startIndex = i;
    }
   }
  }
 
  System.out.println("startIndex:"+startIndex);
  System.out.println("endIndex  :"+ endIndex);
  System.out.println("maxValue = " + maxValue);
  for(int i=startIndex;i<=endIndex;i++){
   System.out.print(srcArr[i]+" * ");
  }
 }
}
下面是网上的思想 假设数组为a[],直接利用动态归化来求解,考虑到可能存在负数的情况,我们用Max来表示以a结尾的最大连续子串的乘积值,用Min表示以a结尾的最小的子串的乘积值,那么状态转移方程为: Max=max{a, Max[i-1]*a, Min[i-1]*a}; Min=min{a, Max[i-1]*a, Min[i-1]*a}; 初始状态为Max[1]=Min[1]=a[1]。代码如下:


double func(double *a,const int n) { 

  double *maxA = new double[n]; 
  double *minA = new double[n]; 
  maxA[0] = minA[0] =a[0]; 
  double value = maxA[0]; 
  for(int i = 1 ; i < n ; ++i) { 
     maxA[i] = max(max(a[i],maxA[i-1]*a[i]),minA[i-1]*a[i]); 
     minA[i] = min(min(a[i],maxA[i-1]*a[i]),minA[i-1]*a[i]); 
     value=max(value,maxA[i]); 
  } 
  return value; 
} 
加载更多回复(117)

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧