zoukankan      html  css  js  c++  java
  • 【LeetCode】Find Pivot Index #724 Rust Solution

    给定一个整数类型的数组 nums,请编写一个能够返回数组 “中心索引” 的方法。

    我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。

    如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。

     

    示例 1:

    输入:
    nums = [1, 7, 3, 6, 5, 6]
    输出:3
    解释:
    索引 3 (nums[3] = 6) 的左侧数之和 (1 + 7 + 3 = 11),与右侧数之和 (5 + 6 = 11) 相等。
    同时, 3 也是第一个符合要求的中心索引。

    示例 2:

    输入:
    nums = [1, 2, 3]
    输出:-1
    解释:
    数组中不存在满足此条件的中心索引。


    说明:

        nums 的长度范围为 [0, 10000]。
        任何一个 nums[i] 将会是一个范围在 [-1000, 1000]的整数。

    Rust Solution:

     1 fn pivot_index(nums: Vec<i32>) -> i32 {
     2     // S 是数组的和,当索引 i 是中心索引时,位于 i 左边数组元素的和 leftsum 满足 S - nums[i] - leftsum。
     3     // 我们只需要判断当前索引 i 是否满足 leftsum==S-nums[i]-leftsum 并动态计算 leftsum 的值
     4     
     5     let sum = nums.iter().sum::<i32>();
     6     let len = nums.len();
     7     if len <= 2 {
     8         return -1;
     9     }
    10 
    11     for i in 0..len {
    12         let lh_sum: i32= nums[..i].iter().sum();
    13         println!("lh_sum = {}", lh_sum);
    14         if lh_sum == sum - lh_sum - nums[i] {
    15             println!("rh sum = {}", sum - lh_sum - nums[i]);
    16             return i as i32;
    17         }
    18     }
    19     -1 // if nums is empty return
    20 }

    C++ Solution:

     1 struct Sum {
     2     void operator()(int n) {
     3         sum += n;
     4     }
     5 
     6     Sum(): sum(0){}
     7 
     8     int sum;
     9 };
    10 
    11 int pivotIndex(vector<int>& nums) {
    12     Sum s = for_each(nums.begin(), nums.end(), Sum());
    13     int left_sum = 0;
    14     for(auto i = 0; i < nums.size(); i++){
    15         if (left_sum == s.sum - nums[i] - left_sum) {
    16             return i;
    17         }
    18         left_sum += nums[i];
    19     }
    20     return -1;
    21 }

    Python Solution:

    1 def pivot_index(nums: List[int]) -> int:
    2     s = sum(nums)
    3     left_sum = 0
    4     for i, x in enumerate(nums):
    5         if left_sum == (s - left_sum - x):
    6             return i
    7         left_sum += x
    8     return -1

    Github Solution Link : https://github.com/DaviRain-Su/leetcode_solution/tree/master/find_array_center_index

  • 相关阅读:
    struts.custom.i18n.resources 如何配置多个资源文件?
    axis : java.lang.NoSuchMethodError
    org/apache/commons/discovery/tools/DiscoverSingleton
    java.lang.NoClassDefFoundError: javax/wsdl/OperationType
    .propertie文件注释
    数据库的名称尽量要以英文开头,如果全部输数字的话可能会出错的
    单例模式
    java异常 之 异常的层次结构
    php抓取网页
    &#39;hibernate.dialect&#39; must be set when no Connection available
  • 原文地址:https://www.cnblogs.com/Davirain/p/13526673.html
Copyright © 2011-2022 走看看