
算法
不坠青云之志
这个作者很懒,什么都没留下…
展开
-
java实现重复的DNA序列
一 题目描述:所有 DNA 都由一系列缩写为 'A','C','G' 和 'T' 的核苷酸组成,例如:"ACGAATTCCG"。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来找出所有目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。leetcode链接:重复的DNA序列二 算法思路因为题目的特殊性,我们可以采用空间换时间复杂度的思想,把10个长度单位的字符串存在集合中,如果出现了重复元素,直接放到结果集里即可。三 算原创 2022-01-26 16:15:01 · 1079 阅读 · 0 评论 -
java实现下一个排列
一 题目描述:实现获取【下一个排列】的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。leetcode链接:实现下一个排列二 算法思路首先我们可以先在纸上尝试着用人体的思维去想怎么才能找到下一个更大的数,简单总结之后你可能找到以下的特点1 要先从权重小的位置开始找(也就是从个位找),拿个位去和前面的位置换。2 个位找不到..原创 2022-01-25 20:55:49 · 1053 阅读 · 0 评论 -
java实现不重复数组的全排列
一 算法思想思路:全排列可以理解是一个树的递归的过程,每一个递归过程中的叶子结点就是一种可能的排列方式。利用递归可以很好的帮我们实现下面这颗树的完成深度优先遍历,得到我们想要的全排列。二 编码实现 public static List<List<Integer>> fullArray(List<Integer> number) { List<List<Integer>> result = Lists.原创 2022-01-25 16:05:58 · 1469 阅读 · 0 评论 -
二维数组输出-面试算法题
实现数组的特殊输出方式数组是我们最熟悉的顺序结构,遍历数组也有很多方法,但是像这样的二维数组我们应该怎么遍历呢?我们仔细观察会发现规律,横纵坐标之和是由规律且有范围的,这就是我们的切入点。先试着写代码,以下是第一次写的代码public static void bialian(int a[][]) { int num=0;int num2=0; int max1=0, max2...原创 2018-09-28 22:32:42 · 1115 阅读 · 0 评论 -
java算法分析 数组最长子序列问题
最长子序列问题描述:有一个整型数组,要求求出数组的值最大的子序列。子序列要求是连续的,数组里的值需要是整数,正负均可。问题分析可以设置三个值来找到最长子序列。max:找到单个最大的值sum:找到当前最大子序列和sum_max:得到最大子序列的和max可以通过一遍循环找到。sum从开始的位置往后加,一旦为负就把值设置为0,清空子序列,新的子序列从下个位置开始。在向下求和,不为0就...原创 2018-09-28 22:54:09 · 902 阅读 · 1 评论 -
java算法分析 彩票中奖问题
彩票中奖问题求解问题描述我们可能对彩票有一些多多少少的了解。其实有这样一种中奖机制。假设一个彩票由十位数组成。每一位数都通过统计之后的众数来确定这一位上的数。我们的目的就是设计这样一个算法来实现这样的效果问题分析我们先来分析这个问题的特点。是求出每一位上的众数,我们就以每一位为处理单元。每次得到这个最大的数,十次之后我们就可以得出。有了思路我们来开始编写代码问题求解public ...原创 2018-09-29 22:18:01 · 5345 阅读 · 1 评论 -
CAS算法详解
CAS算法1、CAS概念:CAS是CompareAndSwap的缩写,中文意思是:比较并替换。当要进行CAS操作时,先比较内存地址和原来预期的地址比较,如果相同,表示这块内存地址没有被修改,可以用新地址替换,否则说明该地址被修改了,取消替换操作。整个过程就是个原子操作。以线程为例,CA...原创 2018-12-04 10:31:50 · 1820 阅读 · 0 评论 -
100万数据分割处理思想
100万数据分割处理思想要对100万的数据进行排序。这100万数据存储在文件中,每次只能处理10000的数据。怎么实现对100万数据的排序呢?首先我们肯定要对数据进行切分。分割成100份,每份10000的数据量分成这样的100份数据。把这100万份数据分割成100份的时间的复杂度为忽略。利用堆排序或...原创 2018-11-15 11:05:34 · 763 阅读 · 0 评论 -
java堆排序
java堆排序一:思想引入:如果要你实现两个有序数组的合并,你有什么思路。大多数人的思路是引入一个新的数组,长度为前两个数组的和,然后while判断比较两个数据的大小,依次插入。堆排序思想:堆排序也是这个思路,先把整个大数组通过递归拆分成很小的单元,再逐渐合并这些很小的单元...原创 2019-08-15 11:50:56 · 131 阅读 · 0 评论