Java工程师常见算法题
前言:一般华为OD等大厂会有一些手撕代码或者线上面试写代码的流程,所以给需要的同学准备一些比较常见的。
要注意的是,如果面试中遇到写代码的流程,切记不要直接抄答案,一定要先看懂再写,否则如果答案写出来却无法回答思路,还不如不写
常用的刷题网站:
Java工程师常见算法题(1)
进制转换题(https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6)
题目:

答案:
Java
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.hasNextLine()) { // 注意 while 处理多个 case
String s = in.nextLine();
Integer i = Integer.parseInt(s.substring(2,s.length()),16);
System.out.println(i);
}
}
}核心是 : Integer i = Integer.parseInt(s.substring(2,s.length()),16);
Integer.parseInt()方法有进制转换的方法 , 可以直接调用, 所有16进制开头的数都是以 "0x "开头的 , 所以要将前面的两位去除掉
二、两数之和(https://leetcode.cn/problems/two-sum/)
题目

答案
Java
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param numbers int整型一维数组
* @param target int整型
* @return int整型一维数组
*/
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>();
for (int i = 0; i < nums.length; ++i) {
if (hashtable.containsKey(target - nums[i])) {
return new int[]{hashtable.get(target - nums[i]), i};
}
hashtable.put(nums[i], i);
}
return new int[0];
}
}明明的随机数(https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0)
题目

答案
Java
import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//输入第一个代表个数
int num = in.nextInt();
//获取后面输入的数据
TreeSet<Integer> set = new TreeSet<Integer>((o1, o2)->o1 - o2);
for (int i = 0 ; i < num; i++) {
set.add(in.nextInt());
}
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}注意 : 在牛客网刷题 , TreeSet集合编辑器不识别 , 需要自己手动导包import java.util.*;
解析
这个题去重 , 排序就是TreeSet集合的特性, 声明一个TreeSet集合丢进去, 之后遍历输出即可
如果不用提供好的TreeSet,也可以自己写排序,过程中去掉重复
字符个数统计(https://www.nowcoder.com/practice/eb94f6a5b2ba49c6ac72d40b5ce95f50)
题目

答案
Java
import java.util.Scanner;
import java.util.* ;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
HashSet<String> set = new HashSet<>();
for(int i = 0 ;i<str.length();i++){
set.add(str.charAt(i)+"");
}
System.out.println(set.size());
}
}解析:
去重就是HashSet的特性 , HashSet会自动对元素去重, 只需要遍历字符串中的每个字符 , 存储到HashSet输出即可
会员方可继续阅读
试读到此结束,完整文档需开通会员,请花两分钟了解下我们
微信扫码添加添加老师微信开通会员:mrt_0607(备注:预见猿份)
探索者会员:59元,全站文档无障碍阅读,没有时间限制。
实践者会员:199元,全站文档+视频+源码资源,没有时间限制。
