java 基础算法题(更新中……)

1.请给出一个单链表结构的定义,每个节点用来储存一个整型数,并且给出一段代码来合并两个已经按照该整数从小到大排好序的链表,使得合并后的链表也是同样排好序的。
2.数组中存在N个数,要求用JAVA实现这样的效果
比如: 数组内容: 1 2 12 13 23 25 35 38 365

要求实现这样的效果:
1
12
13

2
23
25

35
38
365


String[] original = { "1", "2", "12", "13", "23", "25", "35", "38","365" };
ArrayList<String> list = new ArrayList<String>();
char listfirst;
char listSecond;
// 按照字符串排序
for (int i = 0; i < original.length; i++) {
list.add(original[i]);
}
Collections.sort(list);
for (int j = 0; j < list.size(); j++) {
System.out.println(list.get(j));
listfirst = ((String) list.get(j)).charAt(0);
if (j + 1 < list.size()) {
listSecond = ((String) list.get(j + 1)).charAt(0);
if (listfirst != listSecond) {
System.out.println();
}
}
}

3.有五个自然数,每个数都不相同,和是23。这五个数中某几个数的和,能表示1--23中任意的一个数。请列出这五个数的可能的组合。

4.现有一百层高楼和两个棋子,棋子从X层上掉落摔到地面刚好摔碎(即X层以下是摔不碎的)
请问至少需要多少次摔棋子试验就一定能够找到X层是第几层?(棋子摔碎了就不能再用了)
5.求一组数中第二大的元素,要求从效率上考虑。
6.有n个水桶,组成一个环,相邻两个有水管连接, 水管中间有阀门,都关上。
初始条件是:水桶有水,深度不一,保存在数组a[n]里面。
问:设计算法,针对具体的a[n],使得打开阀门最少情况下,水桶深度相同。
时间复杂度 <O(n^2),最佳是o(N).
7.有N个人买可乐,每5空瓶送1瓶,问共需要买多少瓶?

int n = 31;
int drinked = 0;//喝到可乐的人数
int i = 1;
int bottles = 0;//买的可乐瓶数
int left = 0;
int modLeft = 0;//最后剩下的人数
if (n <= 5) {
bottles = n;
} else {
while (true) {
bottles += 5;
drinked += 6;
while (i / 5 >= 1) {
drinked = drinked + i / 5;
i = i / 5;
}
left = n - drinked;
modLeft = left / 5;
if (modLeft == 0) {
bottles += modLeft;
if(drinked != n){
bottles += n-drinked;
}
break;
}
i++;
}
}
System.out.println("We need " + bottles + "bottles");

8.设计一个长方形类,成员变量包括长和宽。类中有计算面积和周长的方法,并有相应的set方法和get方法设置和获得长和宽。编写测试类测试是否达到预定功能。要求使用自定义的包。

9.JAVA编程题:字符串"yekmaakkccekymbvb",求出字符串中有多少种字符?

Set set = new HashSet();
String s1 = "yekmaakkccekymbvb";
String blank = "";
char c;
for(int i=0; i<s1.length(); i++){
c = s1.charAt(i);
System.out.println(c);
set.add(blank+c);
}
System.out.println(set.size());

10.一个文本文件中约有10万多行的数据,每个数据占一行(数据为一个整数)。要求:统计出总行数,并找出出现次数最多的那个整数。
11.给你一组字符串如:iu7i8hy4jnb2,让你编程输出里面的数字:7842

String s = "iu7i8hy4jnb2";
String newStr = s.replaceAll("[a-z]", "");
System.out.println(newStr);

12.给你一组字符串让你把它倒叙输出

public static String reverseStr(String str){
StringBuffer sb = new StringBuffer(str);
sb.reverse();
return sb.toString();
}

12.求完全数

public static boolean isPerfectNumber(int num){
int total = 0;
for(int i=1;i<=num/2;i++){
if(num%i==0)total+=i;
}
if(total == num)
return true;
return false;
}

13.显示某一文件目录下的文件名

/*
* 就是一个递归处理文件夹嵌套
*/
public static void listAllFile(File f){
if(f.isFile()){
System.out.println(f.getAbsolutePath());
}else if(f.isDirectory()){
File[] fl = f.listFiles();
for(File ff:fl){
if(ff.isFile()){
System.out.println(ff.getAbsolutePath());
}else if(ff.isDirectory()){
listAllFile(ff);
}
}

}
}

14.将54张牌1~54随机分发到数组

public class PlayCard {


public static void main(String[] args) {
final int CART_ARRAY_LEN = 54;
int[] carts = new int[CART_ARRAY_LEN];
for(int i=0;i<CART_ARRAY_LEN;i++){
carts[i]=i+1;
}
for (int i = 0; i <CART_ARRAY_LEN ; i++) {
int rdmNum1 = (int) (Math.random() * 54);
int rdmNum2 = (int) (Math.random() * 54);
int temp = carts[rdmNum1];
carts[rdmNum1] = carts[rdmNum2];
carts[rdmNum2] = temp;
}
for(int i=0;i<CART_ARRAY_LEN;i++){
System.out.println(carts[i]);
}
}

}

15.定义一串字母的字符串,求出现最多的那个字母,出现了多少次!

public class Test {
public static void main(String[] args) {
String str = "dsfdsfsdfsdf";
Map<Character,Integer> d = new HashMap<Character, Integer>();
for(int i = 0;i<str.length();i++){
char c = str.charAt(i);
if(d.containsKey(c)){
d.put(c, d.get(c)+1);
}
else{
d.put(c, 1);
}
}
System.out.println(d);
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值