[力扣題解] 494. 目標和

題目:494. 目標和

思路

01背包

轉換為01背包問題

難點在于看出可以用背包問題解決本題;
題目字面意思是劃分出一堆再減去另一堆,得到的結果想要等于target,設定一堆為正,記為left,另一堆為負,記為right,所有數的和為sum
left + right = sumleft - right = target,解得left = (target + sum) / 2right = (sum - target) / 2,因為left是一個整數,所以target + sum必須為偶數,同時right為正數,所以sum - target也必須為正;

01背包

  • f[j] :區間[0, i]的數字放進容積為j的背包里,有f[j]這么多種放法;
  • f [ j ] = ∑ i = 0 i f [ j ? n u m s [ i ] ] f[j] =\sum_{i = 0}^i{f[j - nums[i]]} f[j]=i=0i?f[j?nums[i]],在保證j - nums[i]有效性的前提下,這是一個組合問題,相當于在前面一個的基礎上選nums[0],或者選nums[1],… … 或者選nums[i],最后把這些情況都加起來;
  • f[0] = 0
  • weights[i] = nums[i],values[i] = nums[i]

代碼

// 01背包
// f[j] : [0, i]這個區間的數放進容量為j的背包里,有幾種方法
// f[j] = sum(f[j - nums[i]])
// weights[i] = nums[i], values[i] = nums[i];
// f[0] = 1
// 注意 target 有可能為負數
class Solution {
public:int findTargetSumWays(vector<int>& nums, int target) {int i, j;int size = nums.size(), sum = 0;int f[1005] = {0};f[0] = 1;for(i = 0; i < size; i++){sum += nums[i];}cout << "sum : " << sum;// 不合法if((target + sum) % 2 == 1 || sum < abs(target)){return 0;}for(i = 0; i < size; i++){for(j = sum; j >= nums[i]; j--){f[j] += f[j - nums[i]];}}return f[(sum + target)/2];}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13929.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13929.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13929.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ChatGPT類大模型應用入門了解與使用

一 前言 ChatGPT大眾熱情逐漸褪去&#xff0c;但在后臺技術人的探索還處于熱火朝天狀態。如果我們生活的世界是一杯清水&#xff0c; 那類似ChatGPT的語言大模型技術的橫空出世就如滴入水杯的一滴墨汁&#xff0c;第一滴很顯眼&#xff0c;但實際上是后續墨汁慢慢擴散滲透才是…

Windows11下使用Qt5.14.2編譯QtXlsx驅動詳細步驟

原有&#xff1a;由于系統需要將QTableWidget表格中的數據導出、在Windows下最開始使用Excel.Application組件實現了導出功能&#xff0c;后面將代碼轉換到Ubuntu20.04下進行編譯&#xff0c;發現項目.pro文件中的QT axcontainer和代碼.h文件中的#include <QAxObject>跟…

基于圖鳥UI的資訊名片模版開發與應用

一、引言 在前端技術日新月異的今天&#xff0c;快速、高效、美觀的UI組件庫和模板成為了開發者們關注的焦點。圖鳥UI作為一款集成了基礎布局元素、配色體系、圖標icon和精選組件的UI框架&#xff0c;為前端開發者提供了極大的便利。本文將以圖鳥UI為基礎&#xff0c;探討基于…

接口測試工具有哪些,哪些比較火

接口測試工具可以幫助開發人員和測試人員更高效地進行接口測試&#xff0c;以下是一些常用的接口測試工具&#xff1a; 1. **Postman** Postman 是一款廣受歡迎的接口測試工具&#xff0c;它提供了豐富的功能和直觀的用戶界面&#xff0c;幫助開發人員和測試人員輕松進行 API…

如何讓外網訪問內網服務?

隨著互聯網的快速發展&#xff0c;越來越多的企業和個人需要將內網服務暴露給外網用戶訪問。由于安全和隱私等因素的考慮&#xff0c;直接將內網服務暴露在外網是非常不安全的做法。如何讓外網用戶安全訪問內網服務成為了一個重要的問題。 在這個問題上&#xff0c;天聯公司提供…

golang rune類型解析,與byte,string對比,以及應用

Golang中的rune類型是一個32位的整數類型(int32)&#xff0c;它是用來表示Unicode碼點的。rune類型的值可以是任何合法的Unicode碼點&#xff0c;它通常用來處理字符串中的單個字符。 在Golang中&#xff0c;字符常量使用單引號來表示&#xff0c;例如 a。使用單引號表示的字符…

rust - 使用 cargo-nextest 替代 cargo test

cargo-nextest 是新一代的rust測試程序&#xff0c;能夠極大提升測試性能&#xff0c;可以完全替代 cargo test 命令。 1. 安裝 cargo install cargo-nextest2. 執行測試 project ├── Cargo.toml ├── LICENSE ├── README.md ├── build.rs ├── core_utils │ …

K-means聚類模型

目錄 1.定義 2.K-means聚類模型的優點 3.K-means聚類模型的缺點 4.K-means聚類模型的應用場景 5.對K-means聚類模型未來的展望 6.小結 1.定義 什么是 K-means 聚類模型&#xff1f;K-means 聚類模型是一種無監督學習算法&#xff0c;用于將數據劃分為不同的組或簇&#…

Lumines推出RGBL彩色混合LED

Luminus Devices傾心打造了一款嶄新的4合1 RGBL&#xff08;紅綠藍綠石灰&#xff09;LED系列&#xff0c;專為舞臺與建筑照明領域量身打造&#xff0c;滿足對高顯色指數&#xff08;CRI&#xff09;與高輸出顏色混合的苛刻需求。這一創新之舉&#xff0c;無疑是照明技術的一次…

使用HiBurn燒錄鴻蒙.bin文件到Hi3861開發板

鴻蒙官方文檔的“Hi3861開發板第一個示例程序”中描述了——如何使用DevEco Device Tool工具燒錄二進制文件到Hi3861開發板&#xff1b; 本文將介紹如何使用HiBurn工具燒錄鴻蒙的.bin文件到Hi3861開發板。 獲取HiBurn工具 通過鴻蒙官方文檔我們知道DevEco Device Tool是一個V…

SAP--ABAP踩坑日志---日期函數的踩坑-----FIMA_DATE_CREATE

當你需要動態生成日期列的時候,出現了奇怪的BUG怎么辦? 用函數循環循環產生獲取下一個日期,結果出現了5.30 直接到6.1了 …我的5.31呢??? 解決方案:用這個,不要瞎用函數啊! day_col day_col 1.

Mybatis 與 MybatisPlus 打印sql日志配置

Mybatis 與 MybatisPlus 打印sql日志配置 方法一&#xff1a; Mybatis 配置&#xff1a; mybatis:configuration: ### 開啟打印sql配置log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ### 開啟駝峰配置 map-underscore-to-camel-case&#xff1a;trueMyb…

docker所在磁盤空間不足 遷移數據

1.查看原始目錄docker info | grep "Docker Root Dir" 一般在/var/lib/docker 2.停止docker service docekr stop 3.移動數據 注意 移動前不要創建docker目錄&#xff01; mv /var/lib/docker /home/docker 4.進入目錄查看是否與原始目錄相同&#xff0c;確認一…

LeetCode 題解:112. 路徑總和,遞歸,JavaScript,詳細注釋

原題鏈接&#xff1a; 112. 路徑總和 解題思路&#xff1a; 如果求根節點到葉子節點的路徑上的節點值之和&#xff0c;假設共有3個節點&#xff0c;那么寫成計算式是val1 val2 val3 sum那么將計算式轉換就可以得到val3 sum - val1 - val2也就是說&#xff0c;問題可以從…

表現層框架設計之表現層設計模式_2.MVP模式

1.MVP模式 MVP&#xff08;Model-View-Presenter&#xff09;模式提供數據&#xff0c;View負責顯示&#xff0c;Controller/Presenter負責邏輯的處理。MVP是從經典的模式MVC演變而來&#xff0c;它們的基本思想有相通的地方&#xff1a;Controller/Presenter負責邏輯的處理&am…

16、設計模式之迭代器模式

迭代器模式 迭代器模式&#xff08;Iterator Pattern&#xff09;是 Java 和 .Net 編程環境中非常常用的設計模式。這種模式用于順序訪問集合對象的元素&#xff0c;不需要知道集合對象的底層表示。 迭代器模式屬于行為型模式。 介紹 意圖&#xff1a; 提供一種方法順序訪問…

rtemis 包:多種機器學習算法集成!兼顧數據處理與可視化美圖

rtemis 是一個集機器學習與可視化于一體的 R 包&#xff0c;用于各種高級機器學習研究和應用。整體而言&#xff0c;該軟件有三個目標&#xff1a; 「應用數據科學」&#xff1a;使高級數據分析高效且易于使用 「機器學習研究」&#xff1a;提供一個平臺以開發和測試新穎的機器…

Linux 查詢開機時間

在Linux系統中&#xff0c;有幾種方法可以查詢系統的開機時間。 博主博客 https://blog.uso6.comhttps://blog.csdn.net/dxk539687357 方法一&#xff1a;使用 uptime 命令 uptime 命令顯示系統的運行時間以及其他信息。 [nukixuso6 ~]# uptime輸出示例&#xff1a; 15:29:…

【MySQL精通之路】查詢優化器的使用(8)-優化器提示

博主PS&#xff1a;優化器提示的作用就是你可以提示優化器使用什么優化策略。當然優化器只是被提示了&#xff0c;而不是必須按你的提示做出操作&#xff0c;它可以執行或者拒絕你的提示。所以它叫優化器提示&#xff0c;而不是優化器配置。 控制優化器策略的一種方法是設置優化…

谷歌B端獨立站建站推廣,外貿建站訓練營,傻瓜式教學

做外貿方法重要&#xff0c;工具更重要&#xff0c;而這些背后的規則和套路&#xff0c;身邊的人往往不會告訴你&#xff0c;成功的人更不會教給你。本套課程主要內容包括&#xff1a;一套體系化的獨立站建站方法&#xff0c;學會“高效學習”避免無效努力&#xff0c;擁有獨立…