深圳罗湖做网站公司哪家好,网站logo例子,宿州网站建设公司,物流网站建设图片代码随想录算法训练营第6周#xff08;C语言#xff09;|Day37#xff08;贪心#xff09;
Day37、贪心#xff08;包含题目 738.单调递增的数字 968.监控二叉树 #xff09;
738.单调递增的数字
题目描述
给定一个非负整数 N#xff0c;找出小于或等于 N 的最大的整… 代码随想录算法训练营第6周C语言|Day37贪心
Day37、贪心包含题目 738.单调递增的数字 968.监控二叉树
738.单调递增的数字
题目描述
给定一个非负整数 N找出小于或等于 N 的最大的整数同时这个整数需要满足其各个位数上的数字是单调递增。
题目解答
int monotoneIncreasingDigits(int n) {int buf[10]{0};int count0;int flag0;while(n0){buf[count]n%10;count;n/10;}for(int i1;icount;i){if(buf[i]buf[i-1]){buf[i]--;flagi;}}for(int iflag-1;i0;i--){buf[i]9;}for(int icount-1;i0;i--){nn*10buf[i];}return n;
}
题目总结
l先遍历数字将数字变成数组。
968.监控二叉树
题目描述
给定一个二叉树我们在树的节点上安装摄像头。
节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。
计算监控树的所有节点所需的最小摄像头数量。
题目解答
int traversal(struct TreeNode*root,int*res){if(!root){return 2;}int lefttraversal(root-left,res);int righttraversal(root-right,res);if(left2right2){return 0;}if(left0||right0){(*res);return 1;}if(left1||right1){return 2;}return -1;
}int minCameraCover(struct TreeNode* root) {int res0;if(traversal(root,res)0){res;}return res;
}题目总结
贪心加递归。