
算法
Hannah_zh
这个作者很懒,什么都没留下…
展开
-
数组中的逆序对(Java版)
题目描述: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P,并将P对1000000007取模的结果输出,即输出P%1000000007。 解题思路: 目的:给出的数组进行归并排序,在归并排序的过程中同时统计逆序对的个数。 思路: 1、分开计算子序列的逆序对数; 2、合并时,子序列进行排序,从排序后的最后一个元素开始比较; 3、如果上一个子序列最后一个元素大于后一个子序列的最后一个元素,则逆序对个数为后一个子序列的长度,并把大的元素原创 2020-06-25 17:44:48 · 644 阅读 · 0 评论 -
2020农行软开实习的笔试题
2020农行软开实习的笔试题,第一题。 编写程序计算10个正整数的平均数,找出这10个数中雨平均值的距离最近的三个数(差值的绝对值)。以距离的大小对这三个数进行排序并输出(距离小的先输出) 输入:[33,44,61,2,36,42,56,81,11,17] 输出:[36,42,33] 思路: 算平均值。 用hashmap,每个数减去平均值,取绝对值,存入key。value就存那个数就行。 用一个ArrayList存一下keys,并排序。 把排序后的list的前三个元素当成key,去map里g原创 2020-06-20 23:33:12 · 1364 阅读 · 0 评论 -
归并排序算法
一、归并排序流程 二、合并两个有序数组的流程 三、Python代码实现 算法中通过递归并调用merge函数完成排序。 def merge(s1,s2,s): """将两个列表是s1,s2按顺序融合为一个列表s,s为原列表""" # j和i就相当于两个指向的位置,i指s1,j指s2 i = j = 0 while i+j<len(s): ...原创 2019-11-07 20:06:51 · 215 阅读 · 0 评论