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

算法28.0

724. 寻找数组的中心下标 - 力扣(LeetCode)


自己的理解:

大体思路是用前缀和数组  然后用状态转移方程求解

求解后面几个元素 不一定要用全部元素减去前面几个元素  还可以使用后缀和

用的前缀和的思想预处理 减少时间复杂度  用空间换时间


细节:

求解方程:   判断是否相等 如果相等  返回那个解

初始化问题 以及 填表顺序 

填写f(i)的时候  根据公式 需要的是f(i-1) 所以从左向右填写

填写g(i)的时候  根据公式 需要的是g(i+1) 需要从右向左填写

g(n-1)会发生越界访问情况  g(n-1)= 0   


别人的讲解:

暴力解法:每次枚举  然后比较 这样时间复杂度很高

优化暴力解法: 用前缀和简化时间复杂度    用前缀预处理的思想在前缀和的基础上进行微调   

用f表示前缀和数组   用g表示后缀和数组  f(x) g(x)哈哈


下面是题目、效果图和代码:

class Solution 
{public int pivotIndex(int[] nums) {int n = nums.length;int[] f = new int[n];//因为是从i到i-1 所以没有必要n+1int[] g = new int[n];//1.预处理一下前缀和数组以及后缀和数组//因为初始化数组的时候元素就是0 所以没必要单独赋值为0 直接从1开始就可以了for(int i =1;i < n;i++)  f[i] = f[i-1]+nums[i-1];for(int i =n-2;i >= 0 ;i--) //填写g表 从n-1的位置开始填写 又因为n-1的位置是0  我们从n-2的位置开始填写g[i] = g[i+1]+nums[i+1];//2.使用//遍历所有 然后找到要整的情况返回就可以了for(int i = 0;i < n; i++)if(f[i] == g[i])return i ; return -1;}
}
//这种写法也构建数组了  但是填写元素只是“用到”nums数组的元素 很简洁
//xiyu251106&1#4*3

http://www.dtcms.com/a/581299.html

相关文章:

  • Spring Cloud中的@LoadBalanced注解实现原理
  • 建站快车的使用方法电子商务网站对比分析
  • 分布式Web应用场景下存在的Session问题
  • 12.线程(一)
  • 如何做二维码跳转到网站建设网站专家
  • 前端i18n实现中英文切换
  • Java基础——常用算法4
  • SQL50+Hot100系列(11.7)
  • Python 第二十六节 多线程应用详细介绍及使用注意事项
  • 网站建设交接表wordpress编程视频教程
  • LeafView(轻量级电脑图片查看器) v3.8.1 中文绿色便携版
  • MySQL死锁问题分析与解决方案
  • shell中获取达梦信息方法示例
  • calibre QRC提取寄生参数
  • 【Hot100 |5-LeetCode 11. 盛最多水的容器】
  • 【MicroPython编程-ESP32篇】-DH11温度湿度传感器驱动
  • 字节deer-flow项目模块详解
  • 【Python】Python并发与并行编程图解
  • 清城网站seodiscuz自适应模板
  • 优秀网页设计网站是wordpress php开发
  • 内部网关协议——OSPF 协议(开放最短路径优先)(链路状态路由协议)
  • rman-08137:warning:archived log not deleted
  • 专业的开发网站建设价格虚拟云电脑
  • [Linux——Lesson21.进程信号:信号概念 信号的产生]
  • 浙江英文网站建设嘉兴高档网站建设
  • ERP与WMS一体化构建方案
  • python+django/flask的眼科患者随访管理系统 AI智能模型
  • 实战案例:用 Guava ImmutableList 优化缓存查询系统,解决多线程数据篡改与内存浪费问题
  • AR短视频SDK,打造差异化竞争壁垒
  • 什么是AR人脸特效sdk?