赞
踩
#HW机考攻略
【刷题网址】
(牛客)
https://www.nowcoder.com/ta/huawei
(力扣)
https://leetcode-cn.com/problemset/all
链接:https://www.nowcoder.com/questionTerminal/7c7382f1dc8e425f93114ddcd5eda18f?
左边写每道题的题目 右边写关键思路关键思路
(1)输入处理(重要):HJ5.进制转换 A是65 +25 Z是90 a是97 z是122 a+25是z a-A=32. 字符和int比较自动转换为int.
(2)排列组合:(牛客搜索)NC61.两数之和
(3)快速排序:HJ3.明明的随机数 LINKEDHASHSET 按照输入的顺序输出,TREESET按照排序输出。
(4)哈希表:HJ10.字符个数统计 in.nextLine().toCharArray(); String才可以转。 然后set.add 和set.size()取大小,容量。
(5)递归:NC68.跳台阶 //递推 列出状态转移方程,设置初始状态,返回转移方程的右边。
(带*题目与第一第二道题目难度相近,以下题目基本上覆盖知识点)
2.字符串操作(6题)
(1)HJ17.坐标移动
(2)HJ20.密码验证合格程序 遍历截取后的字符串是否包含被截取的字符串。substring(begin,end)表示返回end-1-begin 这些下标的字符串。
还有就是string.match(".*[^]+.*")
(3)*HJ23.删除字符串中出现次数最少的字符 StringBuilder strb 是变长string 可以用add()追加字符。 Math.min(min,num); 是取最小的函数,
也有最大的。map.getOrDefault(i,0) 取key为i的 value ,没有value 就默认value为0).
(4)*HJ33.整数与IP地址间的转换 IP4个数为pow(2,24)到pow(2,0) 然后相加。 number%(long)Math.pow(2,8)可以依次得到ip的每一个数。
用StringBuilder.append()追加。不过如果想要每次向前追加,可以用 st =new StringBuilder().append(ch).append(st);
意思是每次新建一个动态数组,把最新的数据先加进去,再把另外一个数据加进去。
(5)HJ101.输入整型数组和排序标识 这里主要是调用Arrays.sort(arr);//数组排序 Arrays是Arrylist的工具类。int [] arr= new int[长度]
(6)*HJ106.字符串逆序 转为ToArray(),然后逆序输出。
3.排序(5题)
(1)HJ8.合并表记录 注意不要用nextInt map.getOrDefault(Integer.parseInt(str[0]),0)+ Integer.parseInt(str[1])
(2)*HJ14.字符串排序 用工具类方法直接排序。Arrays.sort(str); Iterator<String> ite = Arrays.stream(str).iterator();
(3)HJ27.查找兄弟单词 Arrays 和[]集合有反正集合类型有Collections.sort()排序把内部排好。String.valueOf(sort) 做判断。
不重写toString方法返回的都是hashcode,不是String本身。
(4)*NC37.合并区间 重写排序方法。然后设置初始状态,还有大小的比较。
(5)*HJ68.成绩排序 这里的排序方式需要从写,Arrays.sort(arr,(o1,o2){return return o2-o1;//从高到低...} 这里的arr是数组,o1,o2是数组
里的某个元素(1维数组)arr是二位数组。数组只能是一个同一数据类型。所以这里有三个标志,第一个是输入的顺序(潜在的)
第二个是名字,第三个是成绩 把下标i名字形成map,和 把顺序下标i 和成绩 都是数字 形成一个二位数组,然后重写排序,得到新的排序,
排序好以后,得到[[2,90],[1,80],[0,70]] 再用map获取map.get(0)得到名字。 其实就是构建两个表,然后把其中一个表排序后再关联另外一个比表。
4.栈(2题)
(1)NC52.括号序列 将数组的值遍历,把数组中左括号对应的右括号赋值给栈,遇到右括号就匹配是否栈为空,为空说明前面没有左括号直接出现有括号,返回错误。
在用stack.lastElement()或者取出栈顶与数组的右括号对比是否相同,不相同说明数组右括号出现的顺序不对,返回错误。
遍历结束以后,判断栈是否为空,不为空则说明还有左括号没有右括号去匹配,返回错误。为空则为正确。
(2)*leetcode 161 4.括号的最大嵌套深度 用一个max 记录最大深度,每遍历一个元素是左括号就放入栈中,如果栈的size1>max 0则把size赋值给max1。如果遇到右括号就
把stack pop 0一个,表示消除了一个层级从新开始遇到下一个括号再算深度1。
5.排列组合(2题)
(1)*leetcode 面试题08.08.有重复字符串的排列组合
(2)leetcode 77.组合
6.双指针(3题)
(1)*leetcode 674.最长连续递增序列
(2)NC17.最长回文子串
(3)NC28.最小覆盖子串
7.深搜(1题)
(1)HJ41.称砝码
8.二叉树(2题)
(1)*leetcode 剑指offer 32 — II. 从上到下打印二叉树III
(2)leetcode 剑指offer 32 — III. 从上到下打印二叉树III
9.其他(6题)
(1)*HJ108.求最小公倍数
(2)*HJ28.素数伴侣
(3)*HJ60.查找组成一个偶数最接近的两个素数
(4)*leetcode 994.腐烂的橘子
(5)leetcode 204.计数质数
(6)HJ25. 数据分类处理
【注意事项】
1. 摄像头一定要开,避免离开座位,左右晃头,以免系统误判作弊
2. 可以用本地IDE调试,但是不能用在线IDE,考试期间会录屏,屏幕只允许在考试页面和本地IDE之间切换
3. 练习时要注重语言的数据结构,编程语言的高级函数的使用等
4. 编程的时候就用牛客网的id去答题,因为答题的时候不会提示错误,用自己的会
以上题目熟练掌握后进行模拟考试,模拟套卷链接:https://www.nowcoder.com/test/1088888/summary
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。