https://leetcode.com/problems/k-th-symbol-in-grammar/description
779. K-th Symbol in Grammar
给你一个数字 n 和一个数字 k,n 表示第几列 k 表示第几行(列和行从 1 开始)
第一列的数字固定为 0,第一列之后的数字按照以下规律:
取代前一列的所有 0 -> 01 取代前一列的所有 1 -> 10
Example:
n = 3,则
ROW1=0
ROW2=01
ROW3=0110
求出第 n 列的第 k 个数字是多少。
思路:
一开始直接暴力解果然timeout
思路是k是由k/2产生,从规则可以看出如果k%2为0则不变,k%2为1则取反,
简化过后变成找k-1二进制出现过1的次数,如果是奇数则输出1,偶数输出0
用一行就解完真的蛮爽的
我爱rust
impl Solution {
pub fn kth_grammar(n: i32, k: i32) -> i32 {
format!("{:b}", k - 1)
.chars()
.into_iter()
.filter(|&x| x == '1')
.count() as i32
% 2
}
}