
算法题
夜來风羽声
这个作者很懒,什么都没留下…
展开
-
归并排序及相关题目
5.归并排序及相关题目归并排序一、递归实现取数组的中间值分别对左右两遍的数组进行相同处理最后进行合并(重点)使用辅助数组来记录排序后的结果将数组分为了左组和右组通过三个指针来进行标记(i,p1,p2),分别指向的是辅助数组,左组和右组在p1和p2都不越界的情况下,通过比较p1和p2的数值,如果p1<p2那么就p1对应值给辅助数组,且指向下一个数(p2同理)最终要么p1越界,要么p2越界,把还没越界的那组后续的数全部赋值到辅助数组中最后将辅助数组的值填充到原始数组中原创 2021-11-02 17:50:06 · 371 阅读 · 0 评论 -
基础的数据结构及实现
基础数据结构链表单向链表的反转定义pre,next两个指针都指向null,如果头结点不为空记录头结点的下一结点头结点指向nullpre标记头结点头结点为nextpublic static Node reverseList(Node head) { Node pre = null; Node next = null; while (head != null) { next = head.next; head.next = pr原创 2021-11-01 10:54:17 · 213 阅读 · 0 评论 -
异或运算运用
3.异或运算概念:异或运算:相同为0,不同为1同或运算:相同以1,不同为0总结:异或运算 = 无进位相加性质:0^N == NN^N == 0满足交换律和结合律如何不用额外变量交换两个数灵活运用异或的两个性质,如果是数组交换的话必须保证互换的两个索引值不相同public static void main(String[] args) { int a = 19; int b = 6000; System.out.println(a); Sy原创 2021-10-31 17:09:19 · 345 阅读 · 0 评论 -
二分查找的经典例题
二分法有序数组有序数组找到指定num只要左边界不大于右边界,那么就判断数组中间数的值是否等于指定num如果等于则返回true如果大于则不要右边如果小于则不要左边// 有序数组查找指定数字public static boolean exists(int[] sortedArr, int num) { if (sortedArr == null || sortedArr.length == 0) { return false; } int L原创 2021-10-31 16:07:34 · 554 阅读 · 0 评论 -
基本排序及对数器
基本排序冒泡排序0~N-10~N-20~N-3相邻的两个数两两比较,将较大的数排在前面public static void bubbleSort(int[] arr) { // 0 ~ N-1 // 0 ~ N-2 // 0 ~ N-3 if (arr == null || arr.length < 2) { return; } int N = arr.length; for (int end = N - 1; end >= 0;原创 2021-10-31 14:32:05 · 78 阅读 · 0 评论 -
面试的时候遇到的题
经典递归实现:题目:啤酒2元一瓶 4个瓶盖能换1瓶啤酒,2个空瓶也能换1瓶啤酒,问:10元钱最多能喝几瓶酒?public class Temp { public static void main(String[] args) { System.out.println(getMaxDrink(10)); } static int maxCount = 0; public static int getMaxDrink(int money) { if (money <= 0) {原创 2021-08-25 16:04:44 · 85 阅读 · 0 评论