数据结构与算法
文章平均质量分 84
算法+数据结构专栏
Baret-H
腾讯PCG Cloud IDE 团队,分享后台研发、基础架构、云研发、工程效能的相关知识~
展开
-
左神讲算法——二分法及其拓展
目录1. 经典二分例题2. 拓展例题一:寻找大于等于某数最左侧位置3. 拓展例题二:局部最小值问题1. 经典二分例题题目一:在一个有序数组中,找到某个数是否存在1️⃣ 如果采用暴力法,时间复杂度为O(N)public static int findNum(int[] arr, int num) { for (int i = 0; i < arr.length; i++) { if (arr[i] == num) return i; }原创 2021-06-14 22:18:45 · 708 阅读 · 3 评论 -
左神讲算法——异或的高级操作(两数交换+经典面试题)
目录1. 异或的性质2. 两数交换3. 经典面试例题1. 异或的性质异或可以看成相同为1,不同为0;也可以看作无进位相加,有奇数个1则结果为1,有偶数个1则结果为0异或满足交换律和结合律:a^b=b^a (a^b)^c=a^(b^c)任何数与0异或不变:a^0=a任何数异或自己为零:a^a=02. 两数交换当我们交换两个数时,可以通过异或的方式进行操作://交换两个数a = a ^ b; //a=a^b b=bb = a ^ b; //b=a^b^b=a^0=a a=a^ba.原创 2021-06-12 08:06:21 · 1410 阅读 · 5 评论 -
左神讲算法——超级水王问题(详解)
超级水王问题:给你一个数组,出现次数大于数组长度的一半的元素称之为水王数,怎么能快速找到水王数?内存限制:时间复杂度O(n),额外空间复杂度O(1)——也就是遍历数组的次数为有限次,申请的变量数为有限个参考链接:https://www.bilibili.com/video/BV11v411G7xR?from=search&seid=11400709428790899860方式一:暴力法暴力法的思想很简单,用一个hashmap来存放数组中每个元素及其对应的数量,最后遍历hashmap判断有.原创 2021-06-11 11:02:56 · 1354 阅读 · 1 评论 -
数据结构——四大查找算法(工作必备)
查找算法在java中,常用的查找有四种顺序(线性)查找二分查找折半查找插值查找斐波那契查找1. 线性查找线性查找是逐一比对,发现有相同值,就返回下标public static int SeqSearch(int[] arr, int findVal) { for(int i=0; i<arr.length; i++){ if(arr[i] == findVal) return i; } return -1;}原创 2021-05-10 15:42:57 · 1597 阅读 · 5 评论 -
数据结构——八大排序算法(面试必备)
目录1. 交换排序——冒泡排序2. 交换排序——快速排序3. 选择排序——简单选择排序4. 选择排序——堆排序什么是堆堆排序基本思想步骤图解代码实现5. 插入排序——简单插入排序6. 插入排序——希尔排序7. 归并排序8. 基数排序1. 交换排序——冒泡排序从要排序序列的第一个元素开始,一次比较相邻元素的值,发现逆序则交换,将值较大的元素逐渐从前向后移动。public void bubbleSort(int[] arr){ for (int i = 0; i < arr.le...原创 2021-04-24 14:44:55 · 32931 阅读 · 47 评论