笔试算法总结

文章目录

题目1

使用 StringBuilder 模拟栈的行为,通过判断相邻2个字符是否相同,如果相同就进行删除

java 复制代码
public class Main {
    public static String fun(String s) {
        if (s == null || s.length() <= 1) return s;

        StringBuilder builder = new StringBuilder(); // 使用StringBuilder模拟栈
        for (char c : s.toCharArray()) {
            if (builder.length() > 0 && builder.charAt(builder.length() - 1) == c) {
                builder.deleteCharAt(builder.length() - 1);
            } else {
                builder.append(c);
            }
        }

        return builder.toString();
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        System.out.println(fun(s));
    }
}

题目2

java 复制代码
public class Main {

    public static int climbStairs(int n) {
        if (n <= 2) {
            return n;
        }

        int[] dp = new int[n + 1]; // 动态规划数组

        dp[1] = 1;
        dp[2] = 2;

        for (int i = 3; i <= n; i++) {
            dp[i] = dp[i - 1] + dp[i - 2]; // 状态转移方程
        }

        return dp[n];
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        System.out.println(climbStairs(n));
    }
}

题目3


java 复制代码
 public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int n = N;

        ArrayList<Integer> list = new ArrayList<>(N);
        while (n > 0) {
            list.add(scanner.nextInt());
            n -= 1;
        }

        ArrayList<Integer> list1 = new ArrayList<>(N);
        for (int i = 0; i < N; i++) {
            list1.add(0);
        }
        int res = 0;
        // 每次从每个口袋中取列表中最小值个糖果(0不管)
        while (!list1.equals(list)) {
            int min = Integer.MAX_VALUE;
            for (Integer i : list) {
                if (i == 0) continue;
                if (i < min) min = i;
            }

            for (int i = 0; i < list.size(); i++) {
                if (list.get(i) == 0) continue;
                list.set(i, list.get(i) - min);
            }

            res+=1;
        }
        System.out.println(res);
    }
}

题目4

输入示例:

txt 复制代码
5
1 -2 3 -4 5

输出示例:

txt 复制代码
15

思路很简单,但是当时做题提交的时候,通过率总是18%。不知道为啥,后面我改成了Long类型,然后就通过了全部用例。(易错1:第一次提交没考虑0的情况)

java 复制代码
// 这个是笔试通过的代码 当然优化之处很多
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int n = N;
        ArrayList<Long> list = new ArrayList<>(N);
        while (n > 0) {
            list.add(scanner.nextLong());
            n -= 1;
        }

        if (list.size() == 1) {
            System.out.println(list.get(0));
            return;
        }
        int cnt = 0;// 统计负数个数(0也算入)
        int zero = 0;
        for (Long i : list) {
            if (i == 0) zero = 1;
            if (i <= 0) {
                cnt += 1;
            }
        }

        Long res = 0L;
        Long min = Long.MAX_VALUE;
        for (Long i : list) {
            res += Math.abs(i);
            if (min > Math.abs(i)) min = Math.abs(i);
        }

        if (zero != 0) {
            System.out.println(res);
            return;
        }

        if ((cnt & 1) == 1) {
            // 奇数个负数
            res = res - min - min;
        }

        System.out.println(res);
    }
}
相关推荐
爱笑的源码基地8 分钟前
一款全开源的信创云PACS影像云平台解决方案,支持多模态医学影像处理(CT/MR/DR/超声/病理等)
java·源码·国产化·pacs·云影像·区域pacs
可编程芯片开发15 分钟前
基于CPS-SPWM链式STATCOM系统在电压不平衡环境下控制策略的simulink建模与仿真
算法
我命由我1234525 分钟前
Android 开发问题:ClickableSpan 的点击事件没有生效
java·java-ee·android studio·android jetpack·android-studio·android runtime
2zcode36 分钟前
基于MATLAB图像处理的饮料瓶灌装液位检测系统设计与实现
开发语言·图像处理·matlab
万亿少女的梦16841 分钟前
基于Python的高考志愿填报辅助系统设计与实现
java·spring boot·python·mysql·vue
Jerry44 分钟前
LeetCode 202. 快乐数
算法
微信开发api-视频号协议1 小时前
企业微信外部群开发自动化实践过程
java·前端·微信·自动化·企业微信·ipad
hans汉斯1 小时前
基于改进交叉熵损失函数与Transformer的心电信号高风险分类研究
功能测试·深度学习·算法·yolo·目标检测·分类·transformer
Jerry1 小时前
LeetCode 349. 两个数组的交集
算法
犀利豆2 小时前
#AI in Harness(一)
java·ai编程