当前位置: 首页 > news >正文

笔试算法总结

文章目录

      • 题目1
      • 题目2
      • 题目3
      • 题目4

题目1

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

 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

在这里插入图片描述
输入示例:

5
1 -2 3 -4 5

输出示例:

15

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

// 这个是笔试通过的代码 当然优化之处很多
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);}
}
http://www.lryc.cn/news/459532.html

相关文章:

  • mybatisPlus对于pgSQL中UUID和UUID[]类型的交互
  • vue3 高德地图标注(飞线,呼吸点)效果
  • 程序员成长秘籍:是迈向管理巅峰,还是深耕技术架构?
  • xargs的参数及常用命令
  • FLASK 数据库建立以及部署和表的创建
  • 微信小程序的面试题
  • udp c语言实现组播的例子
  • ffmpeg面向对象——AVInputFormat与URLProtocol啥关系
  • 【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解
  • 中级软考软件设计师真题+模拟题+课件讲解+机考讲解模拟+笔记分享
  • MySQL—视图
  • 鸿蒙OS启动流程
  • 服务器数据恢复—EMC存储RAID5磁盘阵列数据恢复案例
  • 使用 `netcat`(nc)工具进行TCP数据发送和接收
  • Linux虚拟化技术嬗变综述
  • .NET 通过C#设置Excel工作表的页面设置
  • Excel日期导入数据库变为数字怎么办
  • SSL---SSL certificate problem
  • linux tar 打包文件去掉文件所在路径
  • MQ快速入门【详细】个人笔记 讲解通俗易懂
  • react实现实时计时的最简方式
  • 时尚的社会心理机制:求同和树异这对互为矛盾的心理动机,使得人们在社会生活中互相模仿、互相追逐、互相竞争,使得时尚的钟摆永不停息。
  • HarmonyOS NEXT应用开发实战(二、封装比UniApp和小程序更简单好用的网络库)
  • [Hbase]一 HBase基础
  • React.createRef(),React.forwardRef(),forwardRef()结合next.js的link进行路由跳转
  • C++从入门到起飞之——AVL树 全方位剖析!
  • 利用Fail2Ban增强Jupyter Notebook安全性以防范目录遍历攻击
  • 智能贴身监测,健康生活建议,圆道妙医智能手表体验
  • C++——AVL树
  • 极市平台 | 无人机相关开源数据集资源汇总