首页 > 科大讯飞7.31号笔试
头像
溜溜湫_
编辑于 2020-07-31 17:01
+ 关注

科大讯飞7.31号笔试

研发类笔试
四道编程题
1、leetcode:零钱兑换 + 纸币的数量限制;60%
直接用的动态规划,写的零钱兑换

2、快排,输出每次变换后的序列  AC
刚开始,直接写的快排,0%,输出结果错误,后来对照了一下给定测试用例的输出和自己的输出结果,发现递归的出口改一下就可以了,大家看下代码,直接过一遍流程应该就看出来了
代码:
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] array = new int[n];
        for (int i = 0; i < n; i++) {
            array[i] = in.nextInt();
        }
        quickSort(array, 0, n - 1);
    }

    public static void quickSort(int[] array, int left, int right) {
               // 改动就在这里,之前写的是left > right
        if (left >=right) {
            return;
        }
        int key = array[left];
        int i = left;
        int j = right;
        while (i < j) {
            while (i < j && array[j] >= key) {
                j--;
            }
            while (i < j && array[i] <= key) {
                i++;
            }
            if (i < j) {
                swap(array, i, j);
            }
        }
        swap(array, left, j);
        for (int k = 0; k < array.length; k++) {
            if (k == 0) {
                System.out.print(array[k]);

            } else {
                System.out.print(" " + array[k]);
            }

        }
        System.out.println();
        quickSort(array, left, i - 1);
        quickSort(array, j + 1, right);
    }

    public static void swap(int[] array, int i, int j) {
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }
}  
3、分别给出两个矩阵对角的坐标,判断两个矩阵是否相交;  83.3%
思路:
算出其中一个矩阵的横坐标和纵坐标的范围,判断另一个矩阵的四个点的坐标是否在那个范围里;
如果在,相交,不在就不相交;
不知道哪里出错了,只有83.3%

4、从一个字符串中提取出整数; AC
思路:
直接循环判断字符串中的字符,根据ASCII码(的亏我记得0的ASCII码是48),判断ASCII码范围在48-57的,输出;
首次出现 0 和 ’-‘ 号要做处理;
代码:
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String string = in.nextLine();
        int length = string.length();
        int flag = 0;
        for (int i = 0; i < length; i++) {
            if (flag == 0 && string.charAt(i) == '-') {
                System.out.print(string.charAt(i));
            }
            if (string.charAt(i) >= 48 && string.charAt(i) <= 57) {
                if (flag == 0 && string.charAt(i) == 48) {
                    continue;
                }
                flag++;
                System.out.print(string.charAt(i));
            }
        }
    }
}




全部评论

(2) 回帖
加载中...
话题 回帖

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐