算法基础二之二分法与异或运算

左程云算法笔记(一)简单排序、异或运算、二分法 左程云算法笔记(一)简单排序 (LC912)1. 冒泡排序2. 选择排序3. 插入排序异或运算1. 不开辟新空间实现两数交换2. 一堆数中只有一个数出现了奇数次,其余均出现了偶数次,如何找出该数?(LC136)3. 一堆数中只有两个数出现了奇数次,其余均出现了偶数次,求这两个数。(LC260)二分法1. 有序数组中是否存在一个数,需要O(logN) (LC704)2. 有序数组中找≥\geq≥某个数最左侧的位置3. 无序列表中寻找局部最小值/最大值,相邻数都不相等 (LC162/852/1095) 简单 阅读详情

二分法:

1)在一个有序数组中,查找某个数是否存在

2)在一个有序数组中,找>=某个数的最左侧的位置

3)在一个有序数组中,找<=某个数最右侧的位置

4)局部最小值问题

 

小技巧:

N/2       N>>1

N*2       N<<1

N*2 + 1     (N<<1) | 1

在一个有序数组中,查找某个数是否存在

package com.zh.class001;

import com.zh.util.SortUtil;

import java.util.Arrays;

public class BSExist {
    public static void main(String[] args) {
        int testTime = 500000;
        int maxSize = 10;
        int maxValue = 100;
        boolean succeed = true;
        for (int i = 0; i < testTime; i++) {
            int[] arr = SortUtil.generateRandomArray(maxSize, maxValue);
            Arrays.sort(arr);
            int value = (int) ((maxValue + 1) * Math.random()) - (int) (maxValue * Math.random());
            if (test(arr, value) != exist(arr, value)) {
                succeed = false;
                break;
            }
        }
        System.out.println(succeed ? "Nice!" : "Fucking fucked!");
    }

    // for test
    public static boolean test(int[] sortedArr, int num) {
        for(int cur : sortedArr) {
            if(cur == num) {
                return true;
            }
        }
        return false;
    }

    public static boolean exist(int[] arr, int num) {
        if (arr == null || arr.length == 0) {
            return false;
        }
        int left = 0;
        int right = arr.length - 1;
        int mid = 0;

        while (left < right) {
            mid = left + ((right - left) >> 1);
            if (arr[mid] == num) {
                return true;
            } else if (arr[mid] > num) {
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }
        return arr[left] == num;
    }
}

在一个有序数组中,找>=某个数的最左侧的位置

package com.zh.class001;

import com.zh.util.SortUtil;

import java.util.Arrays;

public class BSNearLeft {
    public static void main(String[] args) {
        int testTime = 500000;
        int maxSize = 10;
        int maxValue = 100;
        boolean succeed = true;
        for (int i = 0; i < testTime; i++) {
            int[] arr = SortUtil.generateRandomArray(maxSize, maxValue);
            Arrays.sort(arr);
            int value = (int) ((maxValue + 1) * Math.random()) - (int) (maxValue * Math.random());
            if (test(arr, value) != nearleftIndex(arr, value)) {
                SortUtil.printArray(arr);
                System.out.println(value);
                System.out.println(test(arr, value));
                System.out.println(nearleftIndex(arr, value));
                succeed = false;
                break;
            }
        }
        System.out.println(succeed ? "Nice!" : "Fucking fucked!");
    }
    // 在arr上,找满足>=value的最左位置
    public static int nearleftIndex(int[] arr, int value) {
        int left = 0;
        int right = arr.length - 1;
        int index = -1;

        while (left <= right) {
            int mid = left + ((right - left) >> 1);
            if (arr[mid] >= value) {
                index = mid;
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }
        return index;
    }

    // for test
    public static int test(int[] arr, int value) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] >= value) {
                return i;
            }
        }
        return -1;
    }
}

在一个有序数组中,找<=某个数最右侧的位置

package com.zh.class001;

import com.zh.util.SortUtil;

import java.util.Arrays;

public class BSNearRight {
    public static void main(String[] args) {
        int testTime = 500000;
        int maxSize = 10;
        int maxValue = 100;
        boolean succeed = true;
        for (int i = 0; i < testTime; i++) {
            int[] arr = SortUtil.generateRandomArray(maxSize, maxValue);
            Arrays.sort(arr);
            int value = (int) ((maxValue + 1) * Math.random()) - (int) (maxValue * Math.random());
            if (test(arr, value) != nearRightIndex(arr, value)) {
                SortUtil.printArray(arr);
                System.out.println(value);
                System.out.println(test(arr, value));
                System.out.println(nearRightIndex(arr, value));
                succeed = false;
                break;
            }
        }
        System.out.println(succeed ? "Nice!" : "Fucking fucked!");
    }
    // 在arr上,找满足<=value的最右位置
    public static int nearRightIndex(int[] arr, int value) {
        int left = 0;
        int right = arr.length - 1;
        int index = -1;

        while (left <= right) {
            int mid = left + ((right - left) >> 1);
            if (arr[mid] > value) {
                right = mid - 1;
            } else {
                index = mid;
                left = mid + 1;
            }
        }
        return index;
    }

    // for test
    public static int test(int[] arr, int value) {
        for (int i = arr.length - 1; i >= 0; i--) {
            if (arr[i] <= value) {
                return i;
            }
        }
        return -1;
    }
}

局部最小值问题

条件:无序数组,任意两个相邻的数字都不相等

package com.zh.class001;

/**
 *
 * 找出局部最小
 */
public class BSAwesome {
    public static int getLessIndex(int[] arr) {
        if (arr == null || arr.length == 0) {
            return -1; // no exist
        }
        if (arr.length == 1 || arr[0] < arr[1]) {
            return 0;
        }
        if (arr[arr.length - 1] < arr[arr.length - 2]) {
            return arr.length - 1;
        }
        int left = 1;
        int right = arr.length - 2;
        int mid = 0;
        while (left < right) {
            mid = (left + right) / 2;
            if (arr[mid] > arr[mid - 1]) {
                right = mid - 1;
            } else if (arr[mid] > arr[mid + 1]) {
                left = mid + 1;
            } else {
                return mid;
            }
        }
        return left;
    }
}

异或运算

好记的方法:无进位相加

异或运算的性质:

1)0^N == N    N ^ N == 0

2)异或运算满足交换律和结合律

题目一如何不用额外变量交换两个数

a = a ^ b;
b = a ^ b;
a = a ^ b;
public class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = -100;

        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        
        System.out.println("a:" + a);
        System.out.println("b:" + b);
    }
}

a:-100
b:10

public class Test {
    public static void main(String[] args) {

        int[] arr = {3, 1, 100};
        swap(arr, 0, 2);
        System.out.println(Arrays.toString(arr));

    }

    public static void swap(int[] arr, int i, int j) {
        arr[i] = arr[i] ^ arr[j];
        arr[j] = arr[i] ^ arr[j];
        arr[i] = arr[i] ^ arr[j];
    }

}

[100, 1, 3]

注意:交换可以是相同的值,但是必须是不同的内存区域,否则会变成0

public class Test {
    public static void main(String[] args) {

        int[] arr = {3, 1, 100};
        swap(arr, 0, 0);
        System.out.println(Arrays.toString(arr));

    }


    public static void swap(int a, int b) {
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        System.out.println("a:" + a);
        System.out.println("b:" + b);
    }
}

[0, 1, 100]

题目二 一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这种数

运用上面的异或性质,相同的数异或后为0.0异或上一个数,不变。可以将所有的数异或,得到的数,就是奇数次出现的数

public class EvenTimesOddTimes {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 1, 2, 3, 4, 1};
        printOddTimesNum1(arr);
    }
    // arr中,只有一种数,出现奇数次
    public static void printOddTimesNum1(int[] arr) {
        int eor = 0;
        for (int i = 0; i < arr.length; i++) {
            eor ^= arr[i];
        }
        System.out.println(eor);
    }
}

1

题目三 怎么把一个int类型的数,提取出最右侧的1来

 提示:N & ((~N) + 1)

// 怎么把一个int类型的数,提取出最右侧的1来   
 public static int getRightOne(int num) {
        return num & (~num + 1);
    }

题目四 一个数组中有两种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这两种数。

    // arr中,有两种数,出现奇数次
    public static void printOddTimesNum2(int[] arr) {
        int eor = 0;
        for (int num : arr) {
            eor ^= num;
        }

        // 提取最右侧的1
        int rightOne = eor & (~eor + 1);
        int onlyOne = 0;
        for (int num : arr) {
            if ((num & rightOne) != 0) {
                onlyOne ^= num;
            }
        }
        System.out.println(onlyOne + " " + (eor ^ onlyOne));
    }

推广题目:

一个数组中有一种数出现K次,其他数都出现了M次,M>1,K<M找到,出现了K次的数,要求,额外空间复杂度O(1),时间复杂度O(N)

思路:将每个数转化为二进制,那么int数字可以转化为32大小的数组,因此定义32大小的数组,用来计算每个位置上1的个数和。

如果i位置上1的个数和可以整除M,那么此处出现K次的数,必定不为1,否则为1。

将所有出现K次的数字,为1的位置全部找出来,就可以组成这个数的二级制表示,进而计算出数字。

package com.zh.class001;

import java.util.HashMap;
import java.util.Map;

/**
 * 一个数组中有一种数出现K次,其他数都出现了M次,M>1,K<M找到,
 * 出现了K次的数,要求,额外空间复杂度O(1),时间复杂度O(N)
 *
 */
public class KTimesNum {
    private static final int K = 1;
    private static final int M = 3;
    public static void main(String[] args) {
        int[] arr = {1, 1, 1, 2, 2, 2, 3, 3, 3, 0, 0};
        System.out.println(onlyKTimesNUms(arr, K, M));
        System.out.println(test(arr, K, M));
    }
    public static int onlyKTimesNUms(int[] arr, int k, int m) {
        int[] bitSum = new int[32];

        for (int num : arr) {
            for (int i = 0; i < 32; i++) {
                if (((num >> i) & 1) != 0) {
                    bitSum[i]++;
                }
            }
        }

        int res = 0;
        for (int i = 0; i < 32; i++) {
            if (bitSum[i] % m == 0) {
                continue;
            }
            if (bitSum[i] % m == k) {
                res |= (1 << i);
            } else {
                return -1;
            }
        }

        int zeroCount = 0;
        if (res == 0) {
            for (int num : arr) {
                if (num == 0) {
                    zeroCount++;
                }
            }

            if (zeroCount != k) {
                return -1;
            }
        }
        return res;
    }

    public static int test(int[] arr, int k, int m) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int num : arr) {
            if (map.containsKey(num)) {
                map.put(num, map.get(num) + 1);
            } else {
                map.put(num, 1);
            }
        }

        for (int key : map.keySet()) {
            if (map.get(key) == k) {
                return key;
            }
        }
        return -1;

    }
}

 

题目五 找出二进制1的个数

    public static int bit1Count(int num) {
        int count = 0;
        while (num != 0) {
            int rightOne = num & (~num + 1);
            count++;
            num ^= rightOne;
        }
        return count;
    }

 

 

左神算法笔记: 1. 认识复杂度、对数器、二分法与异或运算 #algorithem/左神算法/基础 #sorting #XOR 评估算法优劣的核心标准 时间复杂度(流程决定) 额外空间复杂度(流程决定) 常数项时间(实现细节决定) 常数时间的操作 算数运算-加减乘除 位运算( >>[带符号右移]/ >>>[不带符号右移]/ <</ |/ &/ ^) 赋值、比较、自增、子减 数组寻址 三种排序 选择排序:遍历整个数组找最大,放在最后 冒泡排序:相邻的两个数比较谁大谁放在后面 插入排序:第k次循环的时候 阅读详情

相关推荐

手把手教你用AppsFlyer SDK实现延迟深度链接(附Android/iOS代码示例)

本文详细介绍了如何使用AppsFlyer SDK实现延迟深度链接,提供Android和iOS双平台代码示例,帮助开发者解决跨平台精准跳转与用户归因问题。通过实战案例和高级场景分析,提升应用的用户转化率和广告投放效果。

sre5engineer的博客 701

Codeforces 1722G 结论:异或性质

异或

stdforces的博客 304

从机械到数字:EC11旋转编码器与ESP32的PWM控制艺术

本文详细解析了EC11旋转编码器与ESP32的PWM控制技术,探讨了如何将机械旋转动作转换为精确的数字信号控制。通过硬件连接、信号处理和软件优化等实践技巧,开发者可以构建高效的人机交互系统,适用于智能照明、电机控制等多种应用场景。

android的专栏 785

给定的数是否为数组两元素之和

//给定n个整数的集合S和另一个整数x,该算法能确定是否存在两个数之和等于x #include <stdio.h> #include <stdbool.h> #include <malloc.h> int merge(int * objary,unsigned int index_start,unsigned int index_middle,unsigne...

tianyingang的博客 355

TMC22系列步进电机驱动设计:从静音原理到硬件实战

步进电机驱动是运动控制系统的核心,其性能直接影响设备的精度、噪音和效率。传统驱动方案如A4988采用方波控制,存在转矩脉动大、运行噪音高等问题。而高性能驱动通过优化电流波形与切换策略,从根本上提升了运动质量。其中,**StealthChop2**技术通过同步MOSFET开关与电机反电动势过零点,实现了近乎无声的低速运行;**SpreadCycle**模式则通过逼近正弦波的电流调节,优化了中高速动态性能。这些技术为3D打印机、CNC机床、自动化设备等对静音和精度有要求的场景提供了关键解决方案。本文以广泛应用的

weixin_31858171的博客 353

电路抗干扰原理及应用(1)

电路抗干扰原理——介绍干扰源、干扰途径、抗干扰技术(接地技术)

qq_34758408的博客 2061

【LeetCode】第1442题——形成两个异或相等数组的三元组数目(难度:中等)

【LeetCode】第1442题——形成两个异或相等数组的三元组数目(难度:中等)题目描述解题思路代码详解思路一:暴力法,三重循环思路二:前缀异或,一重循环注意点 题目描述 给你一个整数数组 arr 。 现需要从数组中取三个下标 i、j 和 k ,其中 (0 <= i < j <= k < arr.length) 。 a 和 b 定义如下: a = arr[i] ^ arr[i + 1] ^ ... ^ arr[j - 1] b = arr[j] ^ arr[j + 1] ^ ...

Se7en_Dayz的博客 286

告别Mac自带终端:iTerm2 + Oh My Zsh 保姆级配置指南(含国内镜像源)

本文提供了一份详细的Mac终端优化指南,涵盖iTerm2、Oh My Zsh和Homebrew的配置流程,特别针对国内用户提供镜像源解决方案。通过安装现代化工具链和优化配置,帮助开发者打造高效、美观的终端工作环境,提升日常开发效率。

weixin_42638178的博客 397

C语言之数组数字异或

接着上次我们讨论的在一组数字中找出一个只出现一次的数,这次我们加大难度,在一组数字中找出两个只出现一次出现一次的数字。题目具体内容如下:一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个数字,编程实现。 例如:int arr[] = {1,2,4,5,3,5,1,2} 这组数中出现一次的数字位3和4. 思路:在上面这组数中如何找出3和4呢?我们知道这组数...

zhangxu 4415

3D点云修复实战:用PCN网络快速补全缺失的激光雷达数据(附代码)

本文详细介绍了PCN(Point Completion Network)网络在3D点云修复领域的实战应用。针对激光雷达数据常见的缺失问题,PCN通过端到端的深度学习架构,直接处理原始点云,实现由粗到精的快速补全。文章深入解析了其核心思想与编码器-解码器架构,并提供了完整的环境搭建、数据准备、模型实现、训练评估及在真实场景下的优化策略与代码示例,为自动驾驶、机器人等领域的开发者提供了高效的数据修复解决方案。

weixin_29041195的博客 392

LeetCode --- 937. Reorder Data in Log Files 解题报告

You are given an array oflogs. Each log is a space-delimited string of words, where the first word is theidentifier. There are two types of logs: Letter-logs: All words (except the identifier) consist of lowercase English letters. Digit-logs: All word..

杨鑫newlife的专栏 426

在一个有序数组中,找>=某个数最左侧的位置

package com.harrison.Class01; import java.util.Arrays; public class Code05_BSNearLeft { public static int nearestIndex(int[] arr,int value) { int l=0; int r=arr.length-1; int mid=0; int index=-1; while(l<=r) { mid=l+((r-l)>>1);

Harrison的学习博客 585

RAGFlow 系列教程 第三课:后端服务入口与请求生命周期

本文深入解析RAGFlow v0.25.0后端核心机制,重点介绍了Quart框架选型原因和服务启动流程。RAGFlow选择Quart作为Web框架,主要基于其异步能力对LLM调用的支持、Flask生态兼容性以及长响应超时处理优势。文章详细拆解了服务启动的8个关键步骤,从日志初始化到HTTP服务启动,并分析了配置加载、数据库初始化等核心环节。通过源码分析揭示了RAGFlow如何实现动态API注册、双重认证体系等关键技术点,为深入理解该系统的请求处理生命周期提供了基础。

weixin_43674738的博客 188

最全算法基础二之二分法与异或运算,淘宝特价版java面试

说句实话,如果一个打工人不想提升自己,那便没有工作的意义,毕竟大家也没有到养老的年龄。当你的技术在一步步贴近阿里p7水平的时候,毫无疑问你的薪资肯定会涨,同时你能学到更多更深的技术,交结到更厉害的大牛。推荐一份Java架构之路必备的学习笔记,内容相当全面!!!成年人的世界没有容易二字,前段时间刷抖音看到一个程序员连着加班两星期到半夜2点的视频。在这个行业若想要拿高薪除了提高硬实力别无他法。你知道吗?现在有的应届生实习薪资都已经赶超开发5年的程序员了,实习薪资26K,30K,你没有紧迫感吗?

2401_83977689的博客 781

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

算法与数据结构全阶班-左程云版(二)基础阶段之1.复杂度、对数器、二分法和异或运算

本文主要介绍了复杂度、对数器、二分法和异或运算:评价算法优劣的核心指标包括时间复杂度(流程决定)、额外空间复杂度(流程决定)和常数项时间(实现细节决定);确定算法流程的时间复杂度时,当完成了表达式的建立,只需要保留最高阶项,复杂度是衡量算法流程的复杂程度的一种指标;对数器是检验算法实现正确性的有力工具,可以覆盖几乎所有情况的测试用例,无死角实现对算法的验证;只要构建出能够排除另外一端的逻辑,就可以使用二分,而不一定需要保证数组有序;异或运算可以简记成无进位相加,可以在算法中实现特定功能、加快运算效率。

CUFEECR的博客 1202

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【左程云算法全讲1】认识复杂度、对数器、二分法与异或运算

系列综述:💞目的:本系列是个人整理为了秋招面试的,整理期间苛求每个知识点,平衡理解简易度与深入程度。🥰来源:材料主要源于进行的,每个知识点的修正和深入主要参考各平台大佬的文章,其中也可能含有少量的个人实验自证。🤭结语:如果有帮到你的地方,就和!!🌈。

qq_43840665的博客 555

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

算法基础:复杂度、二分法、异或运算—左程云

文章目录时间复杂度常数时间操作排序算法O(N^2)选择排序冒泡排序插入排序二分法异或运算 时间复杂度 常数时间操作 执行时间固定的为常数时间操作,执行时间不固定不是常数操作 ·常见的算术运算(+、-、*、/、%等) ·常见的位运算(>>带符号右移、>>>不带符号右移、<<、|、&、^等) ·赋值、比较、白增、白减操作等 ·数组寻址操作 排序算法O(N^2) 选择排序 每次确定最小值[0-n-1],[1-n-1],[2-n-1]… 每个范围的前界:0,

Tower_SHR的博客 440

【数据结构的魅力】001.认识复杂度&二分法&异或运算

常数时间操作 如果一个操作的执行时间不以具体样本量为转移,每次执行时间都是固定时间。称这样的操作为常数时间的操作。 常见的算术运算(+、-、*、/、%等) 常见的位运算(>>、>>>、<<、|、&、^等) 赋值、比较、自增、自减操作等 数组寻址操作 如何确定算法流程的总操作数量与样本数量之间的表达式关系? 1,想象该算法流程所处理的数据状况,要按照最差情况来。 2,把整个流程彻底拆分为一个个基本动作,保证每个动作都是常数时间的操作。 3,如果数据量为N,

我希望许过的愿望一路生花 护送那时的梦抵挡过风沙 482

(蓝桥杯C/C++)——基础算法(上)

二分法是一种高效的查找方法,它通过将问题的搜索范围一分为二(两边具有明显的区别),迭代地缩小搜索范围,直到找到目标或确定目标不存在。分法适用于有序数据集合,并且每次迭代可以将搜索范围缩小一半。分法本质上也是枚举,但和暴力枚举不同,二分法利用数据结构的单调性减少了很多不必要的枚举,从而极大地提高了效率,一般可以将O(n)的枚举优化到O(logn)。常见的二分类型有:(1)整数二分(2)浮点二分(3)二分答案(最常见)1.研究并发现数据结构(或答案变量)的单调性。

2402_82385099的博客 5862

数据结构和算法(认识复杂度、对数器、二分法与异或运算,选择,冒泡,插入)(1)

数据结构和算法笔记什么是时间复杂度?时间复杂度怎么估算? 常数时间的操作 确定算法流程的总操作数量与样本数量之间的表达式关系 只看表达式最高阶项的部分何为常数时间的操作? 如果一个操作的执行时间不以具体样本量为转移,每次执行时间都是固定时间。称这样的操作为常数时间的操作。常见的常数时间的操作 常见的算术运算(+、-、*、/、% 等) 常见的位运算(>>(带符号右移)、>>>(不带符号右移)、...

xiaozhouzhou 579

基础算法----位运算

简介位运算

liujassin的博客 1956

数据结构与算法JC班-左程云第一节课笔记(认识复杂度、对数器、二分法与异或运算)

数据结构与算法基础班-左程云第一节课笔记(认识复杂度、对数器、二分法与异或运算)

DiPingXianhorizon的博客 1313

常见基本排序、二分法与异或运算

选择排序、冒泡排序、插入排序,二分法,异或运算

程序员Forlan的博客 482

探索数据结构与算法——如何运用异或,二分解题

📔 前言 数据结构与算法如今在工作面试中占很高的比重,为了学好算法,大多数人都会去看各种书籍与视频,然后去做题,以做leetcode为例,没学算法前,你可能可以做些简单题,中等题也会一部分,学过数据结构与算法后,你可能发现自己会的中等题变多了,但依然有许多题无从下手,想暴力可时间过不了,此类情况就是无法将所学结合起来,没想到能用学过的方法解题,接下来,我们就来通过题目,剖析异或与二分。 📘 异或 异或作为位运算的一种,其运算方法为:相同(1与1,0与0)为0,相异为1 📑 例题引入 交换两个

Shany_Ming的博客 1056

异或运算符 ^的好处--笔记

leetcode刷题笔记

XJ200012的博客 1613

算法基础01-复杂度、排序、二分、异或

文章目录1 时间复杂度、空间复杂度、排序、异或运算1.1 时间复杂度1.1.1 排序操作1.1.1.1 选择排序1.1.1.2 冒泡排序1.1.1.3 插入排序1.2 空间复杂度1.3 常数项时间复杂度1.4 算法最优解1.5 常见时间复杂度1.6 算法和数据结构脉络1.7 认识对数器1.8 认识二分法1.9 认识异或运算 1 时间复杂度、空间复杂度、排序、异或运算 1.1 时间复杂度 常数时间操作: 算数运算:+ - * / 位运算:>>(带符号右移动)、 >>>(不带

weixin_42503072的博客 744
上一篇: 算法与数据结构之排序算法
下一篇: JVM面试题总结
给自己加加油
博客等级 码龄8年 302粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值