内容简介:当一个数字180度旋转后,不等于原来的数字,那么我们称它是一个好数字。例如,数字0、1和8在旋转180度后,等于它本身。2和5旋转后为对方。6和9也是如此。而其他数字在旋转后不等于任何数字。
D71 788. Rotated Digits
题目链接
题目分析
当一个数字180度旋转后,不等于原来的数字,那么我们称它是一个好数字。
例如,数字0、1和8在旋转180度后,等于它本身。2和5旋转后为对方。6和9也是如此。而其他数字在旋转后不等于任何数字。
给定一个数字,返回从1到这个数字之间有多少个好数字。
思路
用range函数生成1到给定数组之间的所有数组。
用array_filter函数对每一个数字进行一个操作。
对每一个数字,用str_split和array_count_values函数处理。
当包含3、4或7时,因为旋转180度后不等于任何数字,因此这个不是一个好数字。故直接返回false排除当前数字。
对数字2,转换成5。对可旋转的数字进行相同处理。
判断旋转后的数字是否等于原数字。不同则返回true保留当前数字,作为好数字。否则返回false,排除当前数字。
用count函数返回好数字的数量。
最终代码
<?php
class Solution {
/**
* @param Integer $N
* @return Integer
*/
function rotatedDigits($N) {
$all = range(1,$N);
$good = array_filter($all, function($val){
$vs = str_split($val);
$cnt = array_count_values($vs);
if(isset($cnt[3]) || isset($cnt[4]) || isset($cnt[7])){
return false;
}
$newvs = array_map(function($va){
switch($va){
case 2: return 5;
case 5: return 2;
case 6: return 9;
case 9: return 6;
default:
return $va;
}
},$vs);
return intval(implode($newvs)) != $val;
});
return count($good);
}
}
若觉得本文章对你有用,欢迎用 爱发电 资助。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据挖掘导论
Pang-Ning Tan, Michael Steinbach / 范明 范宏建 / 人民邮电出版社 / 2006-01-01 / 49.00元
本书全面介绍了数据挖掘的理论和方法,旨在为读者提供将数据挖掘应用于实际问题所必需的知识。本书涵盖五个主题:数据、分类、关联分析、聚类和异常检测。除异常检测外,每个主题都包含两章:前面一章讲述基本概念、代表性算法和评估技术,后面一章较深入地讨论高级概念和算法。目的是使读者在透彻地理解数据挖掘基础的同时,还能了解更多重要的高级主题。此外,书中还提供了大量示例、图表和习题。 本书适合作为......一起来看看 《数据挖掘导论》 这本书的介绍吧!