秋招备考-华为近6个月高频题汇总


文章目录


前言

仅记录本人准备Leetcode的心得 大家参考 大部分都是做过的题目
总共22道题


一、 leetcode 45. 跳跃游戏 II -java版本

二、 leetcode 101. 对称二叉树-java实现

原题连接

三、349. 两个数组的交集

四、leetcode 205. 同构字符串-java实现

这题刚开始没看懂题意

五、leetcode 周赛 2386. 找出数组的第 K 大和-java实现

这题最难理解

六、leetcode 102. 二叉树的层序遍历-java实现

七、leetcode 1669. 合并两个链表-java实现

八、剑指 Offer II 074. 合并区间

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。

输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

这题做过类似的 以数字第一个排序 然后分两种情况,最后记得把最后一组算上

class Solution {
    public int[][] merge(int[][] a) {
       // Arrays.sort(intervals,(o1,o2)->(o1[0] == o2[0] ? o1[1]-o2[1]:o1[0]-o2[0]));
         List<int[]> res = new ArrayList<>();
           if(a.length ==0 ) return null;
           Arrays.sort(a, (i1, i2) -> (i1[0] == i2[0] ? i2[1] - i1[1] : i1[0] - i2[0]));
           int l = a[0][0] ;int r  = a[0][1];//第一个区间的左右端点
           //从第二个端点开始遍历
           for(int i = 1 ; i < a.length ; i++){
               if(a[i][0] > r ){
                   res.add(new int[]{l,r});
                   l = a[i][0];
                   r = a[i][1];
               }else r = Math.max(r,a[i][1]);
           }
           //最后一个区间要保存
           res.add(new int[]{l,r});
           return res.toArray(new int[0][0]) ;
 
    }
}

九、leetcode 54. 螺旋矩阵-java实现

leetcode 59. 螺旋矩阵 II-java实现

十、剑指 Offer II 056. 二叉搜索树中两个节点之和

给定一个二叉搜索树的 根节点 root 和一个整数 k , 请判断该二叉搜索树中是否存在两个节点它们的值之和等于 k 。假设二叉搜索树中节点的值均唯一。

输入: root = [8,6,10,5,7,9,11], k = 12
输出: true
解释: 节点 5 和节点 7 之和等于 12

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    Set<Integer> s = new HashSet<>();
    public boolean findTarget(TreeNode root, int k) {
        if(root == null) return false ;
         if(s.contains(k - root.val)) return true;
        s.add(root.val);
        return findTarget(root.left,k)||findTarget(root.right,k);
    }
}

十一、剑指offer 32. 调整数组顺序使奇数位于偶数前面-java版本

十二、编辑距离

十三、705. 设计哈希集合

十四、leetcode 208. 实现 Trie (前缀树)——java题解

十五、剑指 Offer II 024. 反转链表

十六、Leetcode 无重复字符的最长字串- java实现 第三题

十七、146. LRU 缓存

十八、328. 奇偶链表

十九、213. 打家劫舍 II

环形 做俩DP

二十、912. 排序数组

用的快排 不过归并排序也要掌握

二十一、20. 有效的括号

二十二、198. 打家劫舍

动态规划

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依嘫_吃代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值