当前位置: 首页 > news >正文

深圳网站制作的网站推广方案策划

深圳网站制作的,网站推广方案策划,新能源课件网站开发新能源,手机端steam怎么调中文题目 在一个数组中, 每一个数左边比当前数小的数累加起来, 叫做这个数组的小和。 求一个数组的小和。 描述: [1, 3, 2, 51, 5] 1左边比1小的数 0; 3左边比3小的数 1; 2左边比2小的数 1; 51左边比51小的数…

题目

在一个数组中, 每一个数左边比当前数小的数累加起来, 叫做这个数组的小和。 求一个数组的小和。

描述:
[1, 3, 2, 51, 5]
1左边比1小的数 0;
3左边比3小的数 1;
2左边比2小的数 1;
51左边比51小的数 2,3,1;
5左边比5小的数 2,3,1;
所以小和为0+1+1+2+3+1+2+3+1=14;

解题思路

转换思想:上述例子我们要求5左面比5小的所有数的和可以转换成 :
求1右面比1大的数的个数×1本身+3右面比3大的数个数×3本身**+2右面比2大的数的个数×2本身+51右面比51大的数的个数×51本身+5右面比5大的数的个数×**5本身。

如何理解?
上述例子中从1开始遍历求到5计算小和,那么1总共被加了4次因为3比1大,2比1大,51比1大,5比1大, 所以就是1*4;同理每个元素的小和就是本身×后面比他大的个数,之后加起来就是最终答案。

如此一来问题转换为:
[1, 3, 2, 51, 5]
1右边比1大的个数本身 4×1=4;
3右边比3大的个数
本身 3×2=6;
2右边比2大的个数本身 2×2=4;
51右边比51大的个数
本身 5×1=0;
5右边比5大的个数*本身 5×0=0;
所以小和为4+6+4+0+0=14;

解决方案

暴力破解这里就不说了,双层for循环遍历判断右面数比左面大就计数++,时间复杂度为o(n的平方)。
本题还可以用归并排序处理。时间复杂度为o(n×logn)

在并的时候判断以上逻辑并且累加即可。

代码如下:


public class Main {private static int sum = 0;public static void main(String[] args) {int[] arr = {1, 3, 2, 51, 5};mergeSort(arr, 0, arr.length - 1);print_nums(arr);System.out.println();System.out.println(sum);}public static void mergeSort(int[] arr, int l, int r) {if (l == r) {return;}int mid = l + (r - l) / 2;mergeSort(arr, l, mid);mergeSort(arr, mid + 1, r);merge(arr, l, mid, r);}public static void merge(int[] arr, int l, int mid, int r) {int[] help = new int[r - l + 1];int pl = l;int pr = mid + 1;int i = 0;while (pl <= mid && pr <= r) {sum += arr[pl] < arr[pr] ? (r - pr + 1) * arr[pl] : 0;help[i++] = arr[pl] < arr[pr] ? arr[pl++] : arr[pr++];}while (pl <= mid) {help[i++] = arr[pl++];}while (pr <= r) {help[i++] = arr[pr++];}for (i = 0; i < help.length; i++) {arr[l + i] = help[i];}}public static void print_nums(int[] nums) {for (int i : nums) {System.out.print(i + " ");}}}

同理也可以求数列的逆序数


/*** 数列逆序数 并输出是奇排列还是偶排列*/
public class Main {private static int sum = 0;public static void main(String[] args) {int[] nums = {2,4,3,1};MergeSort(nums, 0, nums.length - 1);/* print_nums(nums);*/String s = checkIsEvenNumber(sum);System.out.println(s + ":" + sum);}public static void MergeSort(int[] nums, int l, int r) {if (l == r) {return;}int mid = l + ((r - l) >> 1);MergeSort(nums, l, mid);MergeSort(nums, mid + 1, r);Merge(nums, l, mid, r);}public static void Merge(int[] nums, int l, int mid, int r) {int[] help = new int[r - l + 1];int pl = l;int pr = mid + 1;int i = 0;while (pl <= mid && pr <= r) {sum += nums[pl] > nums[pr] ? (r - pr + 1) : 0;help[i++] = nums[pl] > nums[pr] ? nums[pl++] : nums[pr++];}while (pl <= mid) {help[i++] = nums[pl++];}while (pr <= r) {help[i++] = nums[pr++];}for (i = 0; i < help.length; i++) {nums[l + i] = help[i];}}public static String checkIsEvenNumber(int num) {return num % 2 == 0 ? "偶排列" : "奇排列";}/*  public static void print_nums(int[] nums) {for (int i : nums) {System.out.print(i + " ");}}*/}

在这里插入图片描述

http://www.lbrq.cn/news/2761327.html

相关文章:

  • 知名的网站制作公司需要多少钱成全视频免费观看在线看
  • 福州网站制作2022双11各大电商平台销售数据
  • 网站建设期间工作福州seo优化排名推广
  • 用xp做网站是否先搭建iis网络运营师
  • 2023年山西有疫情吗网站标题优化排名
  • 给公司做一个网站流程免费推广产品的平台
  • 陕西西乡网站建设网页代码模板
  • 网站的电子地图怎么做推广平台排名前十名
  • c 网站开发 环境配置大白兔网络营销策划书
  • 做网站还是做淘宝如何联系百度人工客服电话
  • 无锡市住房建设局网站网上企业推广
  • 西安北郊网站开发网站推广包括
  • 国外个人网站模板站长工具查询域名
  • 做知乎网站的图片2023最火的十大新闻
  • 最新网站建设常见问题环球网
  • html5网站免费开发软件制作平台
  • 关于微网站策划ppt怎么做网络营销有哪些推广方式
  • 网站建设虚拟优秀营销软文范例800字
  • 做网站php和java区别长沙网站快速排名提升
  • web制作网页代码排名优化公司口碑哪家好
  • 合肥公司建站模板爱站网关键词工具
  • 网页在线生成网站互联网推广是做什么的
  • 做外贸收费的网站广东搜索引擎优化
  • 网站建设推广找stso88效果好直播代运营公司
  • 东莞房价最新消息保定seo排名外包
  • 国贸做网站公司网络广告的发布方式包括
  • 网页小游戏显示插件不支持怎么办公司排名seo
  • 模块化网站建设一般多少钱百度信息流投放技巧
  • 用什么网站做封面最好企业网站推广有哪些方式
  • 门户网站建设平台企业网站建设公司
  • Linux设备树简介
  • 飞算AI 3.2.0实战评测:10分钟搭建企业级RBAC权限系统
  • 实时计算 记录
  • MQ迁移方案
  • 《C++进阶之继承多态》【多态:概念 + 实现 + 拓展 + 原理】
  • 9.从零开始写LINUX内核——设置中断描述符表