程序员必须1小时内解决的5个编程问题

来源:互联网 发布:逝去的武林知乎 编辑:程序博客网 时间:2024/06/16 03:51

前几天码农网上以为资深工程师提出来的问题,一时间网上答案各种,这里我简单整理了一下,代码来源为JAVA吧,当然随着时间的推移各种版本答案还在不断涌现,大家仅供参考

package com.zsq.five;


public class Question1 {
/*
* 问题1
使用for循环、while循环写出3个函数来计算给定数列的总和。

* */
 
public static void main(String[] args) {

int a[] = {1,2,3,4,5};
int count3 = 0;
Question1 q = new Question1();
q.forCount(a);
q.whileCount(a);
//q.recursionCount(count3,a);



//递归计算
}
public void  forCount(int[] a){
//for循环
int count = 0;
for(int i = 0;i<a.length;i++){
count +=a[i];
}
System.out.println("for循环算的count:-----------------"+count);
}

public void whileCount(int[] a){
//while循环
int index = 0;//遍历数组的标识符
int count2 = 0;
while(index<a.length){

count2 += a[index];
index++;
}
System.out.println("while循环算的count2:-----------------"+count2);

}

//public void recursionCount(int count3,int[] a){}
}

package com.zsq.five;


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


public class Question2 {

/*
* 问题2
编写一个交错合并列表元素的函数。例如:给定的两个列表为[a,B,C]和[1,2,3],
函数返回[a,1,B,2,C,3]。

* */
public static void main(String[] args) {
List a = new ArrayList<>();
List b = new ArrayList<>();
List c = new ArrayList<>();
a.add("A");
a.add("B");
a.add("C");
b.add(1);
b.add(2);
b.add(3);
for (int i = 0; i < a.size(); i++) {
c.add(a.get(i));
c.add(b.get(1));
}
System.out.println(c);
}
}


package com.zsq.five;


import java.math.BigInteger;
import java.util.Scanner;


public class Question3 {
/*
* 问题3
编写一个计算前100位斐波那契数的函数。根据定义,斐波那契序列的前两位数字是0和1,
随后的每个数字是前两个数字的和。例如,前10位斐波那契数为:
0,1,1,2,3,5,8,13,21,34
* */
public static void main(String[] args) {


System.out.println("请输入一个整数(1-100)");
int n=new Scanner(System.in).nextInt();
BigInteger r=g(n);
System.out.println("第"+n+"个波纳费锲数是:"+r);
}
private static BigInteger g(int n) {
BigInteger a=BigInteger.valueOf(1);
BigInteger b=BigInteger.valueOf(1);
if(n==1){
return BigInteger.valueOf(0);
}
else if(n==2|n==3){
return BigInteger.valueOf(1);
}
for (int i=4;i<=n;i++){
//这是BigInteger的封装好的加法
b=a.add(b);
//减法
a=b.subtract(a);
}
return b;
}




}


package com.zsq.five;


import java.util.Arrays;
import java.util.Comparator;


public class Question4 {
public static void main(String[] args) {
/*
* 问题4
编写一个能将给定非负整数列表中的数字排列成最大数字的函数。
例如,给定[50,2,1,9],最大数字为95021。

* */

int[] array = {7,62,9,997,423,44,54,123};
String[] arrStr = new String[array.length];
for(int i=0;i<array.length;i++){
arrStr[i]=array[i]+"";
}
Arrays.sort(arrStr, new Comparator<String>() {
public int compare(String s1,String s2) {
int len = s1.length()<s2.length()?s1.length():s2.length();
for(int i=0;i<len;i++){
if(s1.charAt(i)>s2.charAt(i)){
return -1;
}else if(s1.charAt(i)<s2.charAt(i)){
return 1;
}
}
return 1;
}
});
String result = "";
for(int i=0;i<arrStr.length;i++){
result+=arrStr[i];
}
System.out.println(result);
}

}


package com.zsq.five;


import java.util.Stack;


public class Question5 {
/*
* 问题5
编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,
使得计算结果总是100的程序,并输出所有的可能性。
例如:1 + 2 + 34–5 + 67–8 + 9 = 100
* */
static int count=0; 
static int countSum=0;
public static void execute(int start,Stack<Integer> stack,int sum,Stack<String> operate,final int N) {
if(start==N){
if(sum == 100){
for(int i=0;i<stack.size();i++){
System.out.print(stack.get(i));
if(i<operate.size()){
System.out.print(" "+operate.get(i)+" ");
}
}
System.out.println();
count++;
}
countSum++;
return;
}
int next = start+1;
//j=0代表两数之间相连,j=1代表加,j=2代表减;
for(int j=0;j<3;j++){
if(j==0){
int preInt = stack.pop();
int current = preInt * 10 + next;
stack.push(current);
if(!operate.isEmpty()&&operate.peek().equals("+")){
sum=sum - preInt + current;
}else if(!operate.isEmpty()&&operate.peek().equals("-")){
sum =sum + preInt - current;
}else {
sum=sum - preInt + current;
}
execute(next,stack,sum,operate,N);
//现场还原
int reback = stack.pop();
int preBack = reback/10;
stack.push(preBack);
if(!operate.isEmpty()&&operate.peek().equals("+")){
sum = sum - reback + preBack;
}else if(!operate.isEmpty()&&operate.peek().equals("-")){
sum = sum + reback - preBack;
}else {
sum = sum - reback + preBack;
}
}else if (j==1) {
sum = sum+next;
operate.push("+");
stack.push(next);
execute(next,stack,sum,operate,N);
operate.pop();
int addNum = stack.pop();
sum = sum - addNum;
}else if(j==2){
sum = sum - next;
operate.push("-");
stack.push(next);
execute(next,stack,sum,operate,N);
operate.pop();
int decNum = stack.pop();
sum = sum + decNum;
}
}
}
public static void main(String[] args) {
Stack<Integer>stack =new Stack<Integer>();
stack.push(1);
execute(1, stack, 1, new Stack<String>(),9);


System.out.println("相加等于100的组合数:"+count);
System.out.println("总共组合数"+countSum);
}
}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 驾照分数扣完了怎么办 驾照分被盗扣怎么办 驾驶证分数不够扣怎么办 驾驶证分数扣完了怎么办 驾驶证分被骗了怎么办 自驾游穷游睡车上洗衣服怎么办 考生密码忘了怎么办 中国公民在菲律宾遇害怎么办 鞋有胶皮味怎么办 pvc下水管渗漏水怎么办 5s主板漏电怎么办 飞机转机延误了怎么办 家里有小丑雕像怎么办 巴黎被抢了怎么办 博彩公司压护照怎么办 跑马拉松手机怎么办 高跟鞋绒面掉皮怎么办 白裤子透短裤怎么办 崖柏珠子脏了怎么办 唱歌总是气息不足怎么办 幻影wifi闪退怎么办 镇魔曲转职后装备怎么办 起诉离婚对方不同意怎么办 后宫无人岛掉血了怎么办 老公不同意离婚该怎么办 爸妈闹离婚我该怎么办 爸妈闹离婚了我怎么办 苹果迅雷链接打不开怎么办 眼睛有灼烧感怎么办 爸妈关系不好怎么办 眼睛下面辣到了怎么办 老公隐瞒妻子欠下巨债怎么办 家庭琐事吵架后怎么办 控制不住想哭怎么办 执行死刑已怀孕怎么办 脸上的凹凸坑怎么办 宝宝全身长红敏敏怎么办 人长得丑怎么办? 生父不认孩子怎么办 高速超速10%以内怎么办 c照四年没有年审怎么办