leetcode刷題記錄(一百零七)——279. 完全平方數

(一)問題描述

279. 完全平方數 - 力扣(LeetCode)279. 完全平方數 - 給你一個整數 n ,返回 和為 n 的完全平方數的最少數量 。完全平方數 是一個整數,其值等于另一個整數的平方;換句話說,其值等于一個整數自乘的積。例如,1、4、9 和 16 都是完全平方數,而 3 和 11 不是。?示例?1:輸入:n = 12輸出:3 解釋:12 = 4 + 4 + 4示例 2:輸入:n = 13輸出:2解釋:13 = 4 + 9?提示: * 1 <= n <= 104https://leetcode.cn/problems/perfect-squares/description/?envType=study-plan-v2&envId=top-100-liked

給你一個整數?n?,返回?和為?n?的完全平方數的最少數量?。

完全平方數?是一個整數,其值等于另一個整數的平方;換句話說,其值等于一個整數自乘的積。例如,149?和?16?都是完全平方數,而?3?和?11?不是。

示例?1:

輸入:n = 12
輸出:3 
解釋:12 = 4 + 4 + 4

示例 2:

輸入:n = 13
輸出:2
解釋:13 = 4 + 9

提示:

  • 1 <= n <= 10^4

(二)解決思路

????????這個問題屬于完全背包問題:想象有一個背包,它的容量是j;有一堆物品,對于物品i,它的重量是weights[i],價值是value[i],那么當背包填滿時,求它的價值最大是多少。 這道題的特殊指出在于它求的是最小值,思路其實是一樣的,把取最大值改成取最小值就好了。

????????在這道題里可能出現的問題:是不是所有背包都可以被“填滿“,即是否會出現某個數不能轉換成一系列完全平方數的和。答案是否定的,因為1也是完全平方數,無論如何都能用1湊滿。

????????創建dp數組,dp數組的下標j代表此時背包的容量為 j,dp[j]代表背包容量剩余j時所能存放的最大價值。在這道題中是當n中還剩下 j 這么大時,最少要用dp[j]個完全平方數填充剩下的部分j。將dp數組中每個元素的初始值設置為Integer.MAX_VALUE,即整數中的最大值,這樣它不會在取最小值時被覆蓋。不難想到 j 的最大值是n,且dp[0]=0;

????????遍歷每一個物品,物品需要滿足條件i*i<=n(否則由 i 形成的完全平方數就沒有辦法做n的組成部分啦,并且要注意這里是<=不是<)。對于每個物品,當背包剩余容量為 j 時,思考要不要放它。如果不放,完全平方數個數將是d[j],即保持不變;如果放,那么完全平方數的個數就是上一次放東西時的剩余大小,即dp[j-i*i],再加上這一次添加的一個物品,總物品個數就是dp[j-i*i]+1。比較放和不放的結果,去效果更好,即總個數最少的一個:Math.min(d[j],dp[j-i*i])。

class Solution {public int numSquares(int n) {//完全背包問題//完全平方數就是物品,n是背包int[] dp = new int[n+1];Arrays.fill(dp,Integer.MAX_VALUE);dp[0]=0;for(int i=1;i*i<=n;i++){for(int j=i*i;j<=n;j++){dp[j]=Math.min(dp[j],dp[j-i*i]+1);}}return dp[n];}
}

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

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

相關文章

軟考高級信息系統項目管理師筆記-第2章信息技術發展

第2章 信息技術發展 2.1 信息技術及其發展 1、按表現形態的不同,信息技術可分為硬技術(物化技術)與軟技術(非物化技術)。前者指各種信息設備及其功 能,如傳感器、服務器、智能手機、通信衛星、筆記本電腦。后者指有關信息獲取與處理的各種知識、方法 與技能,如語言文字…

搭建RAG知識庫的完整源碼實現

搭建RAG知識庫的完整源碼實現&#xff08;基于Python 3.8&#xff09;&#xff1a; # -*- coding: utf-8 -*- # 文件名&#xff1a;rag_knowledge_base.py # RAG知識庫搭建完整源碼&#xff08;含中文注釋&#xff09;import os import re import shutil import chromadb from…

利用AFE+MCU構建電池管理系統(BMS)

前言 實際BMS項目中&#xff0c;可能會綜合考慮成本、可拓展、通信交互等&#xff0c;用AFE&#xff08;模擬前端&#xff09;MCU&#xff08;微控制器&#xff09;實現BMS&#xff08;電池管理系統&#xff09;。 希望看到這篇博客的朋友能指出錯誤或提供改進建議。 有紕漏…

基于SpringBoot的智慧家政服務平臺系統設計與實現的設計與實現(源碼+SQL腳本+LW+部署講解等)

專注于大學生項目實戰開發,講解,畢業答疑輔導&#xff0c;歡迎高校老師/同行前輩交流合作?。 技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;…

什么是 Cloud Studio DeepSeek ; 怎么實現Open WebUI快速體驗

什么是 Cloud Studio DeepSeek ;怎么實現Open WebUI快速體驗 一、概述 歡迎使用 Cloud Studio DeepSeek 工作空間!我們已為您預裝并啟動了以下服務,等待加載十幾秒即可查看效果: Ollama 服務:支持通過 API 調用 DeepSeek 模型。 AnythingLLM 前端服務:提供交互式聊天界…

【Python 語法】常用 Python 內置函數

reversed() 反轉reversed() 的語法反轉字符串、列表、元組 sorted() 自定義排序sorted() 語法使用示例1. 基本排序&#xff1a;默認升序排列2. 基本排序&#xff1a;降序排列3. 自定義排序&#xff1a;使用 key 參數4. 自定義排序&#xff1a;按某種規則進行排序5. 排序字典&am…

[網絡] 如何開機自動配置靜態IP,并自動啟動程序

背景&#xff1a; 需要固定ip地址&#xff0c;并且能夠自動啟動可執行文件。 流程&#xff1a; 1.在/etc/network/interfaces 中添加 auto eth0 iface eth0 inet staticaddress 192.168.1.100netmask 255.255.255.0gateway 192.168.1.1 2.將下面這行代碼添加自動啟動腳本 …

打造智能聊天體驗:前端集成 DeepSeek AI 助你快速上手

DeepSeek AI 聊天助手集成指南 先看完整效果&#xff1a; PixPin_2025-02-19_09-15-59 效果圖&#xff1a; 目錄 項目概述功能特點環境準備項目結構組件詳解 ChatContainerChatInputMessageBubbleTypeWriter 核心代碼示例使用指南常見問題 項目概述 基于 Vue 3 TypeScrip…

【C# 數據結構】隊列 FIFO

目錄 隊列的概念FIFO (First-In, First-Out)Queue<T> 的工作原理&#xff1a;示例&#xff1a;解釋&#xff1a; 小結&#xff1a; 環形隊列1. **FIFO&#xff1f;**2. **環形緩沖隊列如何實現FIFO&#xff1f;**關鍵概念&#xff1a; 3. **環形緩沖隊列的工作過程**假設…

Mac 清理緩存,提高內存空間

步驟 1.打開【訪達】 2.菜單欄第五個功能【前往】&#xff0c;點擊【個人】 3.【command shift J】顯示所有文件&#xff0c;打開【資源庫】 4.刪除【Containers】和【Caches】文件 Containers 文件夾&#xff1a;用于存儲每個應用程序的沙盒數據&#xff0c;確保應用程序…

Hutool - DFA:基于 DFA 模型的多關鍵字查找

一、簡介 在文本處理中&#xff0c;常常需要在一段文本里查找多個關鍵字是否存在&#xff0c;例如敏感詞過濾、關鍵詞匹配等場景。Hutool - DFA 模塊基于確定性有限自動機&#xff08;Deterministic Finite Automaton&#xff0c;DFA&#xff09;模型&#xff0c;為我們提供了…

C++STL容器之map

1.介紹 map是 C 標準模板庫&#xff08;STL&#xff09;中的一個關聯容器&#xff0c;用于存儲鍵值對&#xff08;key-value pairs&#xff09;。map中的元素是按照鍵&#xff08;key&#xff09;進行排序的&#xff0c;并且每個鍵在容器中是唯一的。map通常基于紅黑樹&#xf…

CentOS的ssh復制文件

1.前提 首先要已經連接上了對方的ssh 2.命令 scp [文件] 目標IP:目標路徑 例如&#xff1a; $PWD是一個環境變量&#xff0c;可以獲取當前絕對目錄&#xff0c;ssh上傳的時候一定要確保對方有這個目錄才行&#xff0c;不然會報錯 3.遞歸上傳 scp -r 目錄 目標IP:路徑 可以…

《Python實戰進階》專欄 No.3:Django 項目結構解析與入門DEMO

《Python實戰進階》專欄 第3集&#xff1a;Django 項目結構解析與入門DEMO 在本集中&#xff0c;我們將深入探討 Django 的項目結構&#xff0c;并實際配置并運行一個入門DEMO博客網站&#xff0c;幫助你在 Web 開發中更高效地使用 Django。Django 是一個功能強大的 Python Web…

每日一題——376. 擺動序列

題目鏈接&#xff1a;376. 擺動序列 - 力扣&#xff08;LeetCode&#xff09; 代碼&#xff1a; class Solution { public:int wiggleMaxLength(vector<int>& nums) {int curdiff 0;int prediff 0;int result 1; for(int i 0;i < nums.size()-1;i){curdiff …

DeepSeek與ChatGPT:AI語言模型的全面技術解析與對比

DeepSeek與ChatGPT:AI語言模型的全面技術解析與對比 一、誕生背景與技術演進路徑 1.1 OpenAI與ChatGPT的生態布局 ChatGPT的研發主體OpenAI成立于2015年,早期定位為非營利性研究機構,核心目標為實現通用人工智能(AGI)。其技術路徑以Transformer架構為基礎,通過堆疊參數規…

[原創](Modern C++)現代C++的關鍵性概念: 學習新算法: std::unique_copy

[作者] 常用網名: 豬頭三 出生日期: 1981.XX.XX 企鵝交流: 643439947 個人網站: 80x86匯編小站 編程生涯: 2001年~至今[共24年] 職業生涯: 22年 開發語言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 開發工具: Visual Studio、Delphi、XCode、Eclipse…

前端(vue)學習筆記(CLASS 1):vue框架入門

1、vue上手 概念&#xff1a;vue是一個用于構建用戶界面的漸進式框架 vue的兩種使用方式&#xff1a; 1、vue的核心包開發 場景&#xff1a;局部模塊改造 2、vue核心包&vue插件工程化開發 場景&#xff1a;整站開發 1、創建實例 核心步驟 1、準備容器&#xff08;…

synchronized鎖字符串

示例一 在沒有使用synchronized鎖的情況下: import java.util.HashMap; import java.util.Map;public class NonSynchronizedSchoolExample {private static final Map<String, Integer> schoolCountMap new HashMap<>(); // 存儲每個學校的交卷數量public sta…

1.14作業

1 if($x[scheme]http||$x[scheme]https){ $ip gethostbyname($x[host]); echo </br>.$ip.</br>; if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {die(ip!); }echo file_get_contents($_POST[url]);可以DNS重…