华为手撕代码

本文详细探讨了多个LeetCode上的经典问题,包括根据身高重建队列、股票问题、回文链表、最长回文子串、删除链表倒数第N个节点等。解题策略涉及动态规划、双指针、栈的应用,以及链表操作等技巧。
摘要由CSDN通过智能技术生成

1、根据身高重建队列

在这里插入图片描述

    /**
     * 解题思路:先排序再插入
     * 1.排序规则:按照先H高度降序,K个数升序排序
     * 2.遍历排序后的数组,根据K插入到K的位置上
     *
     * 核心思想:高个子先站好位,矮个子插入到K位置上,前面肯定有K个高个子,矮个子再插到前面也满足K的要求
     *
     * @param people
     * @return
     */
    public int[][] reconstructQueue(int[][] people) {
   
        // [7,0], [7,1], [6,1], [5,0], [5,2], [4,4]
        // 再一个一个插入。
        // [7,0]
        // [7,0], [7,1]
        // [7,0], [6,1], [7,1]
        // [5,0], [7,0], [6,1], [7,1]
        // [5,0], [7,0], [5,2], [6,1], [7,1]
        // [5,0], [7,0], [5,2], [6,1], [4,4], [7,1]
        Arrays.sort(people, (o1, o2) -> o1[0] == o2[0] ? o1[1] - o2[1] : o2[0] - o1[0]);

        LinkedList<int[]> list = new LinkedList<>();
        for (int[] i : people) {
   
            list.add(i[1], i);
        }

        return list.toArray(new int[list.size()][2]);
    }

2、和为s的连续正数序列

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

public int[][] findContinuousSequence(int target) {
   
    int i = 1; // 滑动窗口的左边界
    int j = 1; // 滑动窗口的右边界
    int sum = 0; // 滑动窗口中数字的和
    List<int[]> res = new ArrayList<>();

    while (i <= target / 2) {
   
        if (sum < target) {
   
            // 右边界向右移动
            sum += j;
            j++;
        } else if (sum > target) {
   
            // 左边界向右移动
            sum -= i;
            i++;
        } else {
   
            // 记录结果
            int[] arr = new int[j-i];
            for (int k = i; k < j; k++) {
   
                arr[k-i] = k;
            }
            res.add(arr);
            // 左边界向右移动
            sum -= i;
            i++;
        }
    }

    return res.toArray(new int[res.size()][]);
}

3、滑动窗口的最大值

在这里插入图片描述
在这里插入图片描述

class Solution {
   
    public int[] maxSlidingWindow(int[] nums, int k) {
   
        if (nums == null || k < 1 || nums.length < k) {
   
            return new int[0];
        }

        int index = 0;
        int[] res = new int[nums.length - k + 1];
        LinkedList<Integer> queue = new LinkedList<>();

        for (int i = 0; i < nums.length; i++) {
   
            // 在队列不为空的情况下,如果队列尾部的元素要比当前的元素小,或等于当前的元素
            // 那么为了维持从大到小的原则,我必须让尾部元素弹出
            while (!queue.isEmpty() && nums[queue.peekLast()] <= nums[i]) {
   
                queue.pollLast();
            }
            // 不走 while 的话,说明我们正常在队列尾部添加元素
            queue.addLast(i);
            // 如果滑动窗口已经略过了队列中头部的元素,则将头部元素弹出
            if (queue.peekFirst() == (i - k)) {
   
                queue.pollFirst();
            }
            // 看看窗口有没有形成,只有形成了大小为 k 的窗口,我才能收集窗口内的最大值
            if (i >= (k - 1)) {
   
                res[index++] = nums[queue.peekFirst()];
            }
        }
        return res;
    }
}

4、n个骰子的点数

在这里插入图片描述

解题思路
在这里插入图片描述
在这里插入图片描述

class Solution {
   
    public double[] twoSum(int n) {
   
        double[] pre={
   1/6d,1/6d,1/6d,1/6d,1/6d,1/6d};
        for(int i=2;i<=n;i++){
   
            double[] tem=new double[5*i+1];
            for(int m=0;m<pre.length;m++){
   
                for(int k=0;k<6;k++){
   
                    tem[m+k]+=pre[m]/6;
                }
            }
            pre=tem;
        }
        return pre;
    }
}

5、圆圈中最后剩下的数字

在这里插入图片描述
在这里插入图片描述

class Solution {
   
    public int lastRemaining(int n, int m) {
   
        if(n==1){
   
            return 0;
        }
        int tem=lastRemaining(n-1,m);
        return (tem+m)%n;
    }
}

6、股票问题

7、回文链表

在这里插入图片描述

方法一:两次遍历,第一次使用栈来存储节点,第二次进行比较。

class Solution {
   
    //两次遍历,第一次使用栈来存储节点值,第二次比较值
    public boolean isPalindrome(ListNode head) {
   
        if(head==null||head.next==null){
   
            return true;
        }
        ListNode tem=head;
        Stack<Integer> stack=new Stack<>();
        while(tem!=null){
   
            stack.add(tem.val);
            tem=tem.next;
        }
        tem=head;
        while(tem!=null){
   
            if(tem.val!=stack.pop()){
   
                return false;
            }
            tem=tem.next;
        }
        return true;
    }
}

第二种方法:快指针走到末尾,慢指针刚好到中间。其中慢指针将前半部分反转

class Solution {
   
    //快指针走到末尾,慢指针刚好到中间。其中慢指针将前半部分反转。
    public boolean isPalindrome(ListNode head) {
   
        if(head==null||head.next==null){
   
            return true;
        }
        ListNode fast=head;
        ListNode low=head;
        ListNode pre=null;
        ListNode now=head;
        while(fast!=null&&fast.next!=null){
   
            low=low.next;
            fast=fast.next.next;
            now.next=pre;
            pre=now;
            now=low;
        }
        if(fast!=null){
   
            low=low.next;
        }
        while(low!=null){
   
            if(pre.val!=low.val){
   
                return false;
            }
            pre=pre.next;
            low=low.next;
        }
        return true;
    }
}

8、最长回文子串

在这里插入图片描述

class Solution {
   
    //解题思路:中心扩散法
    //遍历s中的每一个字符,例如此时索引为i,left=i-1,right=i+1
    //若left的字符与i相等,则长度+1,left++,直到left没有与i相等的字符
    //若right的字符与i相等,则长度+1,right++,直到right没有与i相等的字符
    //left和right分别向两侧同时扩大,若left和right的字符相等,lrft--,right++
    public String longestPalindrome(String s) {
   
        if(s.length()<=1){
   
            return s;
        }
        int left=0;
        int right=0;
        int max=0;
        int[] arr=new int[2
  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
型 号 代 码 版 本 华为8.0以上版本解屏幕锁:机关机不要插数据线按住音量上+开机键,恢复出厂,部分机需要输入密码“yes”在点恢复。账户锁:华为查询版本--紧急拨号界面 输入*#*#0000#*#*--关于机 查看版本 (以下版本均可按教程,非以下版本需刷机到此版本) Mate8 NXT-AL10 8.0.0.835 Mate8 NXT-TL10 8.0.0.835 Mate8 NXT-CL10/DL00 8.0.0.835 Mate9 MHA-AL00 8.0.0.363 Mate9 MHA-AL00 8.0.0.370 Mate9 MHA-AL00 8.0.0.372 Mate9 MHA-AL00 8.0.0.375 Mate9 MHA-TL00 8.0.0.370 Mate9pro LON-AL00 8.0.0.336 Mate9pro LON-AL00 8.0.0.370 Mate9pro LON-AL00 8.0.0.372 Mate9pro LON-AL00 8.0.0.375 Mate10 ALP-AL00 8.1.0.126 Mate10 ALP-AL00 8.1.0.326 Mate10 ALP-AL00 8.1.0.350 Mate10 ALP-AL00 8.1.0.351 Mate10 ALP-AL00 9.0.0.125 Mate10 ALP-AL00 9.0.0.156 Mate10 ALP-TL00 8.1.0.326 Mate10 ALP-TL00 8.1.0.350 Mate10 ALP-TL00 9.0.0.125 Mate10 ALP-TL00 9.0.0.156 Mate10 ALP-AL00/TL00 9.0.0.156以上版本 Mate10pro BLA-AL00 8.1.0.326 Mate10pro BLA-AL00 8.1.0.336 Mate10pro BLA-AL00 8.1.0.326 Mate10pro BLA-AL00 8.1.0.326 Mate10pro BLA-AL00 9.0.0.125 Mate10pro BLA-AL00 9.0.0.156 Mate10pro BLA-TL00 8.1.0.326 Mate10pro BLA-TL00 8.1.0.326 Mate10pro BLA-TL00 9.0.0.125 Mate10pro BLA-TL00 9.0.0.156 Mate10pro BLA-AL00/TL00 9.0.0.156以上版本 Mate20 HMA-AL00 9.0.0.157 Mate20 HMA-TL00 9.0.0.157 Mate20 HMA-AL00/TL00 9.0.0.157以上版本 Mate20X EVR-AL00/TL00 无视版本 Mate20PRO LYA-AL00/AL10/TL00 9.0.0.157 Mate20PRO LYA-AL00/AL10/TL00 9.0.0.157以上版本 Mate RS保时捷 NEO-AL00 8.1.0.167 Mate RS保时捷 NEO-AL00 8.1.0.171 Mate RS保时捷 NEO-AL00 8.1.0.172 Mate RS保时捷 NEO-AL00 8.1.0.175 Mate RS保时捷 NEO-AL00 9.0.0.156 Mate RS保时捷 NEO-AL00 9.0.0.156以上版本 荣耀8 FRD-AL00 8.0.0.535 荣耀8 FRD-AL10 8.0.0.535 荣耀8 FRD-AL00 8.0.0.540 荣耀8 FRD-AL10 8.0.0.540 荣耀8青春版 PRA-AL00 8.0.0.339 荣耀8青春版 PRA-TL00 8.0.0.343 荣耀8青春版 PRA-TL10 8.0.0.343 荣耀8X JNS-AL00 8.2.0.140 荣耀8X JNS-AL00A 8.2.0.140 荣耀8X JNS-AL00B 8.2.0.140 荣耀8X JNS-TL00 8.2.0.140 荣耀8X JNS-AL00/TL00 8.2.0.140以上版本 荣耀8X MAX ARE-AL00 无视版本 荣耀8X MAX ARE-AL10 无视版本 荣耀8X MAX ARE-L00 无视版本 荣耀9 STF-AL10 8.0.0.355 荣耀9 STF-AL10 8.0.0.356 荣耀9 STF-AL10 8.0.0.357 荣耀9 STF-AL10 8.0.0.357以上版本 荣耀9i LLD-AL00 8.0.0.100 荣耀9i LLD-AL10 8.0.0.100 荣耀9i LLD-AL00 8.0.0.133 荣耀9i LLD-AL00 8.0.0.133 荣耀9i LLD-AL20 8.0.0.136 荣耀9青春版 LLD-AL00 8.0.0.178 荣耀9青春版 LLD-AL10 8.0.0.178 荣耀9青春版 LLD-TL10 8.0.0.178 荣耀9青春版 LLD-TL30 8.0.0.133 荣耀V9 DUK-AL20 B208 荣耀V9 DUK-AL20 8.0.0.356 荣耀V9 DUK-AL20 8.0.0.357 荣耀V9 DUK-AL30 8.0.0.355 荣耀V9PLAY JMM-AL00 无视版本 荣耀V9PLAY JMM-AL10 无视版本 荣耀V9PLAY JMM-TL00 无视版本 荣耀10 COL-AL00 8.1.0.109 荣耀10 COL-AL10 8.1.0.109 荣耀10 COL-AL00 8.1.0.186 荣耀10 COL-AL00 8.1.0.186 荣耀10 COL-AL00 9.0.0.156 荣耀10 COL-AL10 9.0.0.156 荣耀10 COL-AL00/AL10 9.0.0.156以上版本 荣耀10青春版 HRY-AL00 9.0.1.103 荣耀10青春版 HRY-AL10 9.0.1.103 荣耀10青春版 HRY-TL00 9.0.1.103 荣耀10青春版 HRY-AL00 9.0.1.111 荣耀10青春版 HRY-AL10 9.0.1.111 荣耀10青春版 HRY-TL00 9.0.1.111 荣耀10青春版 HRY-AL00/TL00 9.0.1.111以上版本 荣耀V10 BKL-AL00 8.0.0.202 荣耀V10 BKL-AL00 8.0.0.203 荣耀V10 BKL-AL00 8.0.0.204 荣耀V10 BKL-AL20 8.0.0.202 荣耀V10 BKL-AL20 8.0.0.203 荣耀V10 BKL-AL20 8.0.0.204 荣耀V10 BKL-AL00 9.0.0.125 荣耀V10 BKL-AL00 9.0.0.156 荣耀V10 BKL-AL20 9.0.0.125 荣耀V10 BKL-AL20 9.0.0.156 荣耀V10 BKL-AL00/AL20 9.0.0.156以上版本 荣耀V20 PCT-AL00/TL00 无视版本 荣耀NOTE8 EDI-AL10 8.0.0.528 荣耀NOTE8 EDI-AL10 8.0.0.535 荣耀NOTE10 EVL-AL09 8.0.0.535 荣耀NOTE10 EVL-AL09 8.2.0.125 荣耀NOTE10 EVL-AL09 8.2.0.132 荣耀NOTE10 EVL-AL09 8.2.0.151 荣耀PLAY COR-AL00 8.2.0.151 荣耀PLAY COR-AL00 8.2.0.156 荣耀PLAY COR-AL00 9.0.0.125 荣耀PLAY COR-AL00 9.0.0.156 荣耀PLAY COR-AL00 9.0.0.156以上版本 荣耀MAGIC NTS-AL00 无视版本 荣耀MAGIC2 TNY-AL00/TL00 无视版本 荣耀畅玩7 DUA-AL00/TL00 无视版本 荣耀畅玩7A AUM-AL00/AL20/TL00/TL20 无视版本 荣耀畅玩7C LND-AL30/AL40/TL30/TL40 无视版本 荣耀畅玩7X BND-AL00 8.0.0.352 荣耀畅玩7X BND-AL10 8.0.0.352 荣耀畅玩7X BND-TL10 8.0.0.352 荣耀畅玩7X BND-AL00 8.0.0.356 荣耀畅玩7X BND-AL10 8.0.0.356 荣耀畅玩7X BND-AL00 8.0.0.359 荣耀畅玩7X BND-AL10 8.0.0.359 荣耀畅玩7X BND-TL10 8.0.0.359 荣耀畅玩8C BKK-AL10 无视版本 P9 EVA-AL00 8.0.0.535 P9 EVA-AL10 8.0.0.535 P9 EVA-CL00 8.0.0.535 P9 EVA-DL00 8.0.0.535 P9 EVA-L29 8.0.0.535 P10 VTR-AL00 8.0.0.359 P10 VTR-AL00 8.0.0.361 P10 VTR-AL00 8.0.0.368 P10 VTR-AL00 8.0.0.369 P10 VTR-AL00 8.0.0.371 P10 VTR-TL00 8.0.0.361 P10PLUS VKY-AL00 8.0.0.358 P10PLUS VKY-AL00 8.0.0.361 P10PLUS VKY-AL00 8.0.0.368 P10PLUS VKY-AL00 8.0.0.369 P10PLUS VKY-AL00 8.0.0.371 P20 EML-AL00 8.1.0.171 P20 EML-AL00 8.1.0.175 P20 EML-AL00 9.0.0.125 P20 EML-TL00 9.0.0.156 P20 EML-TL00 8.0.0.171 P20 EML-TL00 8.0.0.175 P20 EML-TL00 9.0.0.125 P20 EML-TL00 9.0.0.156 P20 EML-AL00/TL00 9.0.0.156以上版本 P20PRO CLT-AL00 8.1.0.171 P20PRO CLT-AL00 8.1.0.176 P20PRO CLT-AL10 8.1.0.171 P20PRO CLT-AL10 8.1.0.176 P20PRO CLT-AL00 9.0.0.125 P20PRO CLT-AL00 9.0.0.156 P20PRO CLT-AL10 9.0.0.125 P20PRO CLT-AL10 9.0.0.156 P20PRO CLT-AL00/AL10 9.0.0.156以上版本 P20PRO CLT-TL00/TL10 8.1.0.176 P20PRO CLT-TL00/TL10 9.0.0.125 P20PRO CLT-TL00/TL10 9.0.0.156 P20PRO CLT-TL00/TL10 9.0.0.156以上版本 NOVA CZA-AL00/AL10/TL10/TL20 无视版本 NOVA2 PIC-AL00 8.0.0.361 NOVA2 PIC-TL00 8.0.0.361 NOVA2S HWI-AL00 8.0.0.195 NOVA2S HWI-AL00 8.0.0.196 NOVA2S HWI-AL00 8.0.0.199 NOVA2 PLUS BAC-AL00 8.0.0.350 NOVA2 PLUS BAC-AL00 8.0.0.351 NOVA2 PLUS BAC-AL00 8.0.0.358 NOVA2 PLUS BAC-AL00 8.0.0.359 NOVA3 PAR-AL00 8.2.0.154 NOVA3 PAR-AL00 8.2.0.162 NOVA3 PAR-AL00 8.2.0.181 NOVA3 PAR-AL00 8.2.0.181以上版本 NOVA3E ANE-AL00 8.0.0.165 NOVA3E ANE-AL00 8.0.0.158 NOVA3E ANE-AL00 8.0.0.171 NOVA3E ANE-AL00 8.0.0.180 NOVA3E ANE-TL00 8.0.0.151 NOVA3E ANE-TL00 8.0.0.180 NOVA3i INE-AL00 8.2.0.136 NOVA3i INE-AL00 8.2.0.142 NOVA3i INE-AL00/TL00 8.2.0.151 NOVA3i INE-AL00/TL00 8.2.0.155 NOVA3i INE-AL00/TL00 8.2.0.156 NOVA4 VCE-AL00/TL00 无视版本 畅享6S DIG-AL00 AL00C00B210 畅享7 SLA-AL00/TL00 无视版本 畅享7S FIG-AL00 8.0.0.171 畅享7S FIG-AL00 8.0.0.172 畅享7S FIG-AL00 8.0.0.176 畅享7S FIG-AL00 8.0.0.178 畅享7S FIG-AL00 8.0.0.182 畅享7PLUS TRT-AL00/TL00 无视版本 畅享7S LDN-AL00 8.0.0.202 畅享7S LDN-AL00 8.0.0.211 畅享8PLUS TRT-AL00/TL00 无视版本 畅享8PLUS TRT-AL00/TL00 无视版本 畅享8E ATU-AL00 8.0.0.195 畅享8E ATU-TL00 8.0.0.195 畅享9 DUB-AL00 无视版本 畅享9 DUB-AL20 无视版本 畅享9 DUB-TL00 无视版本 畅享9PLUS JKM-AL00 8.2.0.166 畅享9PLUS JKM-TL00 8.2.0.166 畅享9PLUS JKM-AL00/TL00 8.2.0.166以上版本 畅享MAX ARS-AL00 8.2.0.163 麦芒6 RNE-AL00 8.0.0.356 麦芒7 SNE-AL00 8.2.0.142 麦芒7 SNE-AL00 8.2.0.155 麦芒7 SNE-AL00 8.2.0.156
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值