首页 > 其他分享 >LeetCode[279. 完全平方数]

LeetCode[279. 完全平方数]

时间:2022-09-27 19:37:54浏览次数:88  
标签:平方 dist int 队头 队列 279 LeetCode

279. 完全平方数

  • 本题我们可以把他理解成一个图论
  • 我们的每一个结点就是每一个数值
  • 加了平方项以后就从当前值转移到了另一个值
  • BFS常见套路
    • 定义一个队列,队列中有元素就一直循环
    • 初始时刻我们把起始点放入队列中,同时距离设置为0
    • 每次循环取出队头,弹出队头
    • 对我们取出来的队头做一定的处理
    • 得到新的结果,存到队列中
class Solution {
public:
    int numSquares(int n) {
        queue<int> q;
        vector<int> dist(n + 1,INT_MAX);//定义距离,所有点到起点的距离
        q.push(0);
        dist[0] = 0;//起点是0
        while(q.size()){
            int t = q.front();//当前点
            q.pop();
            if(t == n) return dist[t];//走到了终点
            //否则我们枚举当前点t可以走到哪些点
            for(int i = 1; i * i + t <= n; i++){
                int j = t + i * i;
                if(dist[j] > dist[t] + 1){//说明我们的j可以从t过来
                    dist[j] = dist[t] + 1;//更新我们的j值
                    q.push(j);
                }
            }       
        }
        return 0;
    }
};

标签:平方,dist,int,队头,队列,279,LeetCode
From: https://www.cnblogs.com/Sheldon2/p/16735665.html

相关文章

  • LeetCode[2399. 检查相同字母间的距离]
    2399.检查相同字母间的距离classSolution{public:boolcheckDistances(strings,vector<int>&distance){vector<int>p[26];//首先我们定义一个......
  • [Oracle] LeetCode 88 Merge Sorted Array 双指针
    Youaregiventwointegerarraysnums1andnums2,sortedinnon-decreasingorder,andtwointegersmandn,representingthenumberofelementsinnums1andnu......
  • LeetCode02 两数相加
    02publicListNodeaddTwoNumbers(ListNodel1,ListNodel2){ListNoderesultList=newListNode();ListNodecurrent=resultList;ListNodep1=l1......
  • leetcode 617. Merge Two Binary Trees 合并二叉树(简单)
    一、题目大意给你两棵二叉树:root1和root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉......
  • leetcode -- 链表 2
    leetcode链表专题23.合并K个升序链表普通归并排序+python迭代器classSolution:defmergeKLists(self,lists:List[Optional[ListNode]])->Optional[ListNo......
  • [Oracle] LeetCode 1290 Convert Binary Number in a Linked List to Integer
    Givenheadwhichisareferencenodetoasingly-linkedlist.Thevalueofeachnodeinthelinkedlistiseither0or1.Thelinkedlistholdsthebinaryrepr......
  • [Oracle] LeetCode 450 Delete Node in a BST
    GivenarootnodereferenceofaBSTandakey,deletethenodewiththegivenkeyintheBST.Returntherootnodereference(possiblyupdated)oftheBST.Ba......
  • leetcode -- 链表
    leetcode链表专题反转链表三指针+递归classSolution:defreverseList(self,head:Optional[ListNode])->Optional[ListNode]:defreverselist(......
  • LeetCode554 砖墙
    LeetCode554砖墙哈希classSolution:defleastBricks(self,wall:List[List[int]])->int:wall_len,cnt,m=sum(wall[0]),{},len(wall)......
  • LeetCode739 每日温度
    LeetCode739每日温度classSolution:defdailyTemperatures(self,temperatures:List[int])->List[int]:ans,stack,n=[0]*len(temperatures),[......