牛客春招刷题训练营 3月12日 Java 进制转换 合并表记录 称砝码
#牛客春招刷题训练营# + https://www.nowcoder.com/discuss/726480854079250432
题目地址
hhttps://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6?channelPut=w25springcamp
https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201?channelPut=w25springcamp
https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c?channelPut=w25springcamp
进制转换
直接调用 API 即可
long ans=Long.parseLong(str,16);
注意十六进制数要去除前缀 ox
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 // while (in.hasNextInt()) { // 注意 while 处理多个 case // } String str=in.next().replace("0x",""); long ans=Long.parseLong(str,16); System.out.println(ans); } }
合并表记录
开一个 HashMap 模拟一下就行
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextInt()) { // 注意 while 处理多个 case int n=in.nextInt(); TreeMap<Long,Long>hm=new TreeMap<>(); for(int i=0;i<n;i++){ long key=in.nextLong(); long value=in.nextLong(); if(hm.containsKey(key)){ hm.put(key,hm.get(key)+value); }else{ hm.put(key,value); } } for(Map.Entry<Long,Long> entry:hm.entrySet()){ System.out.println(entry.getKey()+" "+entry.getValue()); } } } }
称砝码
经典 dp 动态规划题
布尔类型 dp[i] 表示当前状态
数组索引靠后的状态是由数组索引靠前的状态得到的
我们可以从后往前遍历
如果当前状态是 true 表示可到达
则可以往后走
如果是 false 则不可转移状态
...
牛客算法 校招 Java 合集 文章被收录于专栏
Java写算法