日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

小米面试:目标和

發布時間:2025/6/15 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小米面试:目标和 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:
給定一個非負整數數組,a1, a2, ..., an, 和一個目標數,S?,F在你有兩個符號?+?和?-。對于數組中的任意一個整數,你都可以從?+?或?-中選擇一個符號添加在前面。

返回可以使最終數組和為目標數 S 的所有添加符號的方法數。

示例:

輸入:nums: [1, 1, 1, 1, 1], S: 3
輸出:5
解釋:

-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3

一共有5種方法讓最終目標和為3。
?

提示:

數組非空,且長度不會超過 20 。
初始的數組的和不會超過 1000 。
保證返回的最終結果能被 32 位整數存下。

//dp[i][j] 表示數組前i個數組合和為j的方法數 public class Solution {public int findTargetSumWays(int[] nums, int S) {//占用空間較大時需要申請堆內存int[][] dp = new int[nums.length][2001];//加1000 防止下標為負數dp[0][nums[0] + 1000] = 1;dp[0][-nums[0] + 1000] += 1;for (int i = 1; i < nums.length; i++) {for (int sum = -1000; sum <= 1000; sum++) {//去除對應的0種可能數if (dp[i - 1][sum + 1000] > 0) {//動態規劃是一層層算dp[i][sum + nums[i] + 1000] += dp[i - 1][sum + 1000];dp[i][sum - nums[i] + 1000] += dp[i - 1][sum + 1000];}}}return S > 1000 ? 0 : dp[nums.length - 1][S + 1000];} }

要求和為S的對應的方法數,先求0~S-1 和對應的方法數

?

參考地址:https://leetcode-cn.com/problems/target-sum/solution/mu-biao-he-by-leetcode/

總結

以上是生活随笔為你收集整理的小米面试:目标和的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。