
算法
文章平均质量分 57
SHENKEM
跳出舒适区
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java算法的核心思想及考察的解题思路
典型应用:霍夫曼编码、Dijkstra算法、最小生成树。将问题分解为重叠子问题,存储子问题的解避免重复计算。典型应用:背包问题、最长公共子序列、斐波那契数列。将大问题分解为小问题,递归解决小问题后合并结果。典型应用:链表环检测、滑动窗口、有序数组求和。典型应用:归并排序、快速排序、二分查找。:设计典型、边界和随机测试用例验证代码。典型应用:八皇后问题、数独、排列组合。:状态定义、状态转移方程、边界条件。:双指针、滑动窗口、哈希表记录。:考虑空输入、极端值等特殊情况。:虚拟头节点、快慢指针、递归。原创 2025-05-07 22:40:23 · 815 阅读 · 0 评论 -
项目中数据结构为什么用数组,不用List
1,从内存和性能角度,数组占用更小的内存(),访问性能更高()分配效率:数组在内存中是连续分配的一块固定空间访问速度:直接操作内存,数组的读写操作是直接通过索引计算偏移量(O(1)时间复杂度),无额外开销2,List好处,更符合开发习惯,方法丰富。原创 2025-04-24 11:07:35 · 1125 阅读 · 0 评论 -
反转字符串-双指针法,
双指针法是一种高效的反转字符串方法,时间复杂度为 O(n),空间复杂度为 O(n)。// 交换 left 和 right 指向的字符。通过以上解析和代码实现,可以轻松掌握双指针法反转字符串的核心思想和方法!反转字符串是一种高效且直观的方法。字符串在 Java 中是不可变的,因此需要将其转换为字符数组。字符串在 Java 中是不可变的,因此需要将其转换为字符数组。// 将字符串转换为字符数组。// 将字符数组转换回字符串。通过交换字符并移动指针,逐步将字符串反转。// 交换字符并移动指针。原创 2025-02-10 17:54:28 · 533 阅读 · 0 评论 -
算法-贪心算法
【代码】算法-贪心算法。原创 2025-02-10 17:10:49 · 98 阅读 · 0 评论 -
算法-二分查找
System.out.println("目标值 " + target + " 的索引是: " + result);System.out.println("目标值 " + target + " 不存在");// 目标值在左半部分。// 目标值在右半部分。// 找到目标值,返回索引。如果目标值是数组的第一个或最后一个元素,二分查找仍能正确返回索引。:将数组分为两部分,通过比较目标值和中间元素的值,缩小查找范围。原创 2025-02-10 13:26:28 · 651 阅读 · 0 评论 -
O(1), O(n), O(logn), O(nlogn) 的区别
在描述算法复杂度时,经常用到O(1), O(n), O(logn), O(nlogn)来表示对应复杂度程度, 不过目前大家默认也通过这几个方式表示空间复杂度。其中的n代表输入数据的量。如果ax=N(a>0,且a≠1),那么数x叫做以a为底N的对数,记作x=logaN,读作以a为底N的对数,其中a叫做对数的底数,N叫做真数。那么,O(1), O(n), O(logn), O(nlogn)就可以看作既可表示算法复杂度,也可以表示空间复杂度。:常数时间复杂度,算法的执行时间不随输入规模的变化而变化。原创 2024-12-10 11:26:52 · 268 阅读 · 0 评论 -
选择排序java实现
经典排序算法Java版(动图演示) - mfjhss - 博客园@Slf4jpublic class SelectionSort { /** * 逻辑 * 1. 找到最小值 循环,相邻比较,小的,给到临时变量,再拿临时变量与下一个比较,比它小的,替换它。把最小值,放到第1个位置。起始点:0,临界点:n-1-0 * 2. 找到最次小值 循环,相邻比较,小的,给到临时变量,再拿临时变量与下一个比较,比它小的,替换它。把最小值,放到第2个位置。起始点:1,临界.原创 2021-11-01 18:21:19 · 116 阅读 · 0 评论 -
冒泡排序java实现
@Slf4jpublic class BubbleSort { /** * 实现逻辑 * length,元素总数 * 1.取第一个元素与下一个元素比较,后者大于前者,交换位置,再与下一个元素比较交换,直到把最大元素放到最后。起始节点0,结束节点(比较次数) length-1。 * 2.取第一个元素与下一个元素比较,后者大于前者,交换位置,再与下一个元素比较交换,直到把第二大元素放到倒数第二个位置。起始节点0,结束节点(比较次数,有1个已经排好,少1次) .原创 2021-11-01 14:40:07 · 121 阅读 · 0 评论 -
分布式算法(一致性Hash算法)
总括:0,随机发送,缺点:数据重复落到某个节点或数据无法命中1,hash结果取余,缺点:机器增减要重新计算,缓存不命中,怼到DB2,一致性hash算法,节点,圆环,缺点:节点少无法均匀分布3,添加虚拟节点一、分布式算法在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin)、哈希算法(HASH)、最少连接算法(Least Co...转载 2019-07-10 09:02:30 · 887 阅读 · 0 评论 -
倒排List
package com.anji.allways.business.sales.utils;import java.util.*;/** * 倒排LinkedList */public class LinkedListSort { public static void sortDesc() { List<Integer> linkedList ...原创 2019-06-28 16:41:11 · 779 阅读 · 0 评论 -
用Java写一个递归遍历目录下面的所有文件
首先,拿到这个题目,我要找java怎样实现文件的读取。File file = new File(fileName);我们知道java通过以上代码获取文件目录File[] files = file.listFiles();上面代码获取目录下所有子文件和文件夹。以下是java.io.File.isFile()方法的声明:public boolean isFile()参数NA返回...原创 2019-06-28 15:30:38 · 3360 阅读 · 0 评论 -
二分法查找
@Componentpublic class Sort { private static Logger logger = LoggerFactory.getLogger(Sort.class); /** * 二分法查找 * 逻辑: * 0,与中间元素比较,不断的获取中间元素下标 * 1,中间下标:(初始索引+结束索引)/2,奇偶无差别...原创 2019-06-20 17:20:46 · 325 阅读 · 0 评论 -
排序算法(插入)
package com.anji.allways.business.sales.service.impl;import org.springframework.stereotype.Component;import java.util.Arrays;/** * <pre> * 排序算法 * </pre> * * @author shenke * ...原创 2019-06-19 17:52:52 · 135 阅读 · 0 评论 -
java实现插入排序
思想很重要插入排序法的实现看了几种实现方式,这篇文章讲的比较容易理解,但还是看了一会才明白如何实现。如果只看代码反推插入排序的实现,真是无头苍蝇,无逻辑可言。所以还是先理清楚,插入排序法实现思路,干什么,再去看代码实现,再尝试自己实现。一、基本思想通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入。插入排序非常类似于整扑克牌。在开始摸...转载 2019-06-19 16:52:18 · 141 阅读 · 0 评论