牛客网刷题的经验

#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

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值