随笔分类 -  数据结构与算法

摘要:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 题目地址:https://leetcode-cn.com/problems/er-wei-shu-zu-z 阅读全文
posted @ 2020-07-07 21:32 硬盘红了 阅读(119) 评论(0) 推荐(0)
摘要:题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。 输入描述: 输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开。 输出描述: 按照指定方式输出名字和成绩,名字和成绩之间以 阅读全文
posted @ 2020-07-07 21:29 硬盘红了 阅读(157) 评论(0) 推荐(0)
摘要:对数器: 相当与自己为自己的算法提供了一共测试,类似于OJ的判断,但是样本容量比OJ提供的用例更多。ACM比赛的选手都会使用对数器来进行测试,因为ACM比赛提交一次如果失败是会罚时的。 所以对数器就是自己为自己的算法进行测试。怎么使用呢? 对数器的使用: 判断自己写的算法是否正确,可以编写一个绝对正 阅读全文
posted @ 2020-07-07 15:12 硬盘红了 阅读(245) 评论(0) 推荐(0)
摘要:public class BSAwesome { public static int getLessIndex(int[] arr){ if (arr==null || arr.length ==0){ return -1; } if (arr[0] < arr[1]){ return 0; } i 阅读全文
posted @ 2020-07-07 11:55 硬盘红了 阅读(413) 评论(0) 推荐(0)
摘要:public class BSNearLeft { public static int nearestIndex(int[] arr, int value) { int L = 0; int R = arr.length - 1; int mid = 0; int index = -1; while 阅读全文
posted @ 2020-07-07 11:20 硬盘红了 阅读(585) 评论(0) 推荐(0)
摘要:public class BSExist { public static boolean exist(int[] arr, int target) { if (arr.length == 0 || arr == null) { return false; } int L = 0; int R = a 阅读全文
posted @ 2020-07-07 10:04 硬盘红了 阅读(488) 评论(0) 推荐(0)
摘要:public static void printOddTimesNum2(int[] arr) { int eor = 0; for (int c : arr) { eor ^= c; } //eor = a^b //eor != 0; //eor二进制位必然有一位等于1 int rightOne 阅读全文
posted @ 2020-07-06 23:30 硬盘红了 阅读(563) 评论(0) 推荐(0)
摘要:public class EvenTimesOddNum1 { public static void printOddTimesNum1(int[] arr){ int eor = 0; for (int i = 0;i<arr.length;i++){ eor = eor ^ arr[i]; } 阅读全文
posted @ 2020-07-06 22:32 硬盘红了 阅读(417) 评论(0) 推荐(0)
摘要:基本思路: 保证0~0有序,然后0~1有序,0~2有序,0~i有序的过程 因为0~0肯定是有序的 所以外循环从1开始 比较条件: 前面还有没有数据 && 前面索引的值 > 后面索引的值 时间复杂度最差情况是bigO(n2) 最好情况是bigO(n) public class InsertionSor 阅读全文
posted @ 2020-07-02 22:51 硬盘红了 阅读(144) 评论(0) 推荐(0)
摘要:基本思路就是索引(0,1)比较,(1,2)比较,(2,3)比较依次进行比较,最后索引最大处的值必然为最大的值,外层循环每进行一轮比较就可以减少一次 比如第一轮是(0~n-1) 第二轮就是 (0~n-2) 时间复杂度也是bigO(n2) public class BubbleSort { public 阅读全文
posted @ 2020-07-02 22:46 硬盘红了 阅读(137) 评论(0) 推荐(0)
摘要:public class SelectionSort { public static void selectionSort(int[] arr) { //边界判断 if (arr == null || arr.length < 2) { return; } //1.控制范围 i~n-1 for (i 阅读全文
posted @ 2020-07-02 20:31 硬盘红了 阅读(112) 评论(0) 推荐(0)
摘要:public class Parentheses { public static void main(String[] args) { Stack<String> s = new Stack<>(); String string = StdIn.readString(); String[] inpu 阅读全文
posted @ 2020-06-30 18:49 硬盘红了 阅读(144) 评论(0) 推荐(0)
摘要:首先说明一下Comparator接口中,关于比较器的默认规则: 返回负数的时候,第一个参数排在前面(理解就是第一个参数-第二个参数是负数,那么就说明第二个参数>第一个参数,也就是升序排列) 返回正数的时候,第二个参数排在前面(理解就是第二个参数-第一个参数是正数,那么就说明第二个参数<第一个参数,也 阅读全文
posted @ 2020-04-20 14:22 硬盘红了 阅读(820) 评论(2) 推荐(0)
摘要:思路就是利用一个空的结点,使第一个结点与第二个结点的链接断开,第一个结点链接这个空结点,以此类推。但在断开链接之前需要用一个临时的变量保存第一个结点所指的结点(temp=p->next;),防止找不到后续的结点。 阅读全文
posted @ 2019-01-09 19:36 硬盘红了 阅读(155) 评论(0) 推荐(0)
摘要:1 typedef int ElemType; 2 typedef struct LNode *LinkList; //结构指针 LinkList 3 typedef struct LNode //定义结构体 4 { 5 ElemType data; //数据域 6 LinkList next; / 阅读全文
posted @ 2019-01-08 21:07 硬盘红了 阅读(2932) 评论(1) 推荐(0)
摘要:常见的数量级函数: 在上图中,我们可以看到当 n 很小时,函数之间不易区分,很难说谁处于主导地位,但是当 n 增大时,我们就能看到很明显的区别,谁是老大一目了然:O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) 更加详细的解释: 阅读全文
posted @ 2019-01-07 22:16 硬盘红了 阅读(175) 评论(0) 推荐(0)