给你一个整数数组 nums 。你需要选择 恰好 一个下标(下标从 0 开始)并删除对应的元素。请注意剩下元素的下标可能会因为删除操作而发生改变。
比方说,如果 nums = [6,1,7,4,1] ,那么:
选择删除下标 1 ,剩下的数组为 nums = [6,7,4,1] 。
选择删除下标 2 ,剩下的数组为 nums = [6,1,4,1] 。
选择删除下标 4 ,剩下的数组为 nums = [6,1,7,4] 。
如果一个数组满足奇数下标元素的和与偶数下标元素的和相等,该数组就是一个 平衡数组 。
请你返回删除操作后,剩下的数组 nums 是 平衡数组 的 方案数 。
1 <= nums.length <= 105
1 <= nums[i] <= 104

首先我们先来分析一下这一道题
题目需要我们在数组中删除任意一个数字后,奇数和偶数位置上的数字求和数值相等。
我们可以使用暴力算法直接删除循环后+求和也可以得出答案。

那么有没有更好的方法呢:
数组的顺序有 :
1 2 3 4 5 6 7 8 … n
0 1 2 3 4 5 6 7 … n-1(数组的位置)
如果我们删除的是一个数 那么原来数组就变成了
2 3 4 5 6 7 8 … n
0 1 2 3 4 5 6 …n-1

原来属于奇数位置上的数字变成了偶数位置上的数字
如果我们删除的是数组第标号为2的位置上的数
即:
1 2 4 5 6 7 8 …n
0 1 2 3 4 5 6…n-1
我们会发现在外面删除的数前的奇数还是奇数,偶数还是偶数,但是在我们删除的数之后的偶数与奇数则发生调换。
所以我们可以得出 :
偶数和=删除的数前的偶数+删除的数之后的奇数(包含删除的奇数)
奇数和=删除的数前的奇数+删除的数之后的偶数(包含删除的偶数)
然后我们再处理我们删去的那个数即可。
如果我们删除的是偶数则 奇数和=奇数和-删除的数
如果我们删除的是奇数则 偶数和=偶数和-删除的数


public class Solution {public int waysToMakeFair(int[] nums) {int jiBefore= 0;int ouBefore= 0;int jiAfter=0;int ouAfter=0;int count = 0;int ouShu=0;int jiShu=0;for (int i = 0; i < nums.length; i++) {if (i % 2 == 0) ouAfter = ouAfter + nums[i];else jiAfter = jiAfter + nums[i];}for (int i = 0; i < nums.length; i++) {if (i % 2 == 0) {ouShu=ouBefore+jiAfter;jiShu=jiBefore+ouAfter-nums[i];ouBefore=ouBefore+nums[i];ouAfter=ouAfter-nums[i];}else {ouShu=ouBefore+jiAfter-nums[i];jiShu=jiBefore+ouAfter;jiBefore=jiBefore+nums[i];jiAfter=jiAfter-nums[i];}if (ouShu==jiShu) count++;System.out.println(ouShu);System.out.println(jiShu);}return count;}

}

谢谢大家,欢迎大家讨论更好解法

今天在LeetCode做的一道题相关推荐

  1. 如何克服Leetcode做题的困境

    文章目录 如何克服Leetcode做题的困境 问题背景 克服困境的建议 实践与理论结合 切忌死记硬背 分析解题思路 不要过早看答案 迭代式学习 寻求帮助 坚持与耐心 查漏补缺 结论 如何克服Leetc ...

  2. 试着模仿LeetCode做一个在线OJ系统(超级阉割版)(附项目测试)

    文章目录 引言--痛苦的刷题 1.简单的需求 2.读写文件模块 (1)读文件readFile() 输入:文件路径 返回值:String (2)写文件writeFile() 输入:文件路径,文件 3.创 ...

  3. 加深Java基础,做了20道题选择题!简答题没做

    2015-03-16 17:13 269人阅读 评论(1) 收藏 举报  分类: 笔试(1)  版权声明:本文为博主原创文章,未经博主允许不得转载. 1,下列说法正确的是( A ) A )Java程序 ...

  4. 数据分析师-SQL笔试题-做透这道题就够了

    笔者在求职数据分析师岗位时,在知乎上看到了一道非常经典的SQL题,问题来源: link.笔者认为彻底的搞懂这道题以及涉及的知识点,能够通过绝大部分数据分析岗位的SQL笔试.下面是这道题的问题及解答,答 ...

  5. 史上最全几何技巧,远比傻做一千道题更实用!

    ▲ 点击查看 爱因斯坦说:"一个人当他最初接触欧几里得几何学时,如果不曾为它的明晰性和可靠性所感动,那么他是不会成为一个科学家的." 我们现在再回过头想想,我们小时候学几何的时候, ...

  6. 在attachments上做的八道题

    2019独角兽企业重金招聘Python工程师标准>>> 进入https://attachments.me/hirehack/public/computer.html这个页面(需翻墙) ...

  7. leetcode 做的题目总结

    完美完成的题目 001-两数之和(two sum)-java(2,简单算法-数组) 002-两数相加(add two numbers)-java(2,中级算法-链表) 006-N 字形变换(1,中级遍 ...

  8. TYVJ P1080 N皇后 Label:dfs PS:以前做的一道题,贴出来防忘

    描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 5来描 ...

  9. 今年期末微积分考试试题:看看你能够在两个小时内做对几道题?

    简 介: 微积分对于工程师来讲,就像算数之于普通认生来讲是放我们的思想更加深刻有序.尝尝看看我们大学第一堂课程中的求解问题及其内容,renovate我们的活力.本文整理了上学期期末微积分考试试题,题量 ...

最新文章

  1. IDEA跟Eclipse险些打一架。Maven:都住手,我来一统天下
  2. 用python分析excel数据_Python3分析Excel数据
  3. Arch linux
  4. 覆盖网络 Flannel 0.7
  5. ClickHouse 详细集群部署方案
  6. 如何解开机器学习的面纱?
  7. Java重载和重写6_深入理解Java中的重写和重载
  8. NOIP1998车站
  9. 从入门到入土:基于Python采用TCP协议实现通信功能的程序
  10. PayPal支付流程
  11. MATLAB ttest和ttest2的区别
  12. oracle磁盘满了怎么办,ORACLE磁盘空间占满解决
  13. 生活是苦难的,我又划着我的断桨出发了
  14. 下一清分日期是几年前_我驾驶证有违章我是在清分之前处理的清分日期过后才交的罚款那我那个分还能不能清零那个分还能不能清零?-免费法律咨询-华律网...
  15. 在软件测试面试过程中如何进行自我介绍?
  16. SDN入门:Ubuntu下SDN环境搭建(Floodlight+Minite)(踩坑教程,解决FL1.2版本无法访问网页问题)
  17. Excel 筛选 多表查找
  18. oracle数据库 dmp文件,数据库DMP文件损坏怎么修复
  19. 测试环境搭建-5:设备的驱动程序未被安装解决方法
  20. cmd命令如何cd指定路径

热门文章

  1. 关于2018年8月5号吴声的商业方法
  2. 如何在服务器端接收流式stream数据
  3. 山东自考计算机科学与技术,速看,山东自考本科计算机科学与技术专业介绍
  4. 2023年金蝶云星辰初级顾问认证参考试题(1)
  5. 450g吐司烘烤温度_柔软漂亮的吐司,烘烤时间和温度不容忽视,配方揉面发酵也是重点...
  6. iOS 静态库制作,Framework制作,Bundle制作
  7. 陈泽辉 (Keith Chan)个人简介
  8. win7电脑驱动设备老化导致死机,如何解决?
  9. jquery插件——form表单插件
  10. Maven【五】错误Non-parseable settings ;(position: TEXT seen ... across the set of mirrors)