午夜精品福利视频,亚洲激情专区,免费看a网站,aa毛片,亚洲色图激情小说,亚洲一级毛片,免费一级毛片一级毛片aa

LeetCode Perfect Squares -電腦資料

電腦資料 時(shí)間:2019-01-01 我要投稿
【www.stanzs.com - 電腦資料】

    題目描述

    Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which sum to n.

    For example, given n = 12, return 3 because 12 = 4 + 4 + 4; given n = 13, return 2 because 13 = 4 + 9.

    Credits:

    Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.

    思路:

    本題還是BFS, 遞歸的對(duì)象是完全平方數(shù)集合,以及要尋找的數(shù)集list[0...i](=n-table[0...i])

    1. 找出小于目標(biāo)數(shù):n的完全平方數(shù),如果找到直接返回

    2. 進(jìn)行BFS(完全平方數(shù)集合:table,要尋找的數(shù)集:list,層數(shù):depth):

    循環(huán)table,針對(duì)每個(gè)小于當(dāng)前n的完全平方數(shù),求出它要尋找的數(shù)集:x={n-table[i]} , i∈[0,table.Count] => 得到list

    實(shí)現(xiàn)代碼

   

public class Solution {    public int NumSquares(int n)     {       if(n == 1){		return 1;	}		var len = n/2;	var depth = 1;	var table = new List<int>();	for(var i = 1;i <= len; i++){		var x = i * i;		if(x == n){			return 1;		}		if(x < n){			table.Add(x);		}	}			var list = new List<int>();	for(var i = 0 ;i < table.Count; i++){		list.Add(n-table[i]);	}		Bfs(table, list, depth + 1);		return Depth;}private int Depth;private bool Found = false;public void Bfs(IList<int>table , IList<int>target , int depth){	if(Found){		return;	}		for(var i =0 ;i < table.Count; i++){		for(var j = 0;j < target.Count; j++){			if(table[i] == target[j]){				Depth = depth;				Found = true;				return;			}		}	}		var list = new List<int>();	for(var i = 0;i < target.Count; i++){		var t = table.Where(x=>x<target[i]).tolist(); j="0;j" pre="" var=""></p></target[i]).tolist();></int></int></int></int></int>

最新文章