日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小米面试:目标和

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

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

返回可以使最終數組和為目標數 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/

總結

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

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