面试算法经典问题
1. 对序列排序、按出现的次数多少排序、次数多在前、次数少在后?
"分析思路": 序列按次数降序排序--序列计数--字典排序---字典反序--输出序列 "序列计数": 采用字典{ 元素 : 计数 }、计数累加 "字典排序": 使用 sorted(iterable[, cmp[, key[, reverse]]]) 函数、reverse -- 排序规则,reverse = True 降序,reverse = False 升序(默认). sorted 返回重新排序的列表、对字典排序返回的是二元组列表 "获取sorted返回的指定值即可"
# coding:utf-8 def test_sorted(seq): d = {} for i in seq: if i in d.keys(): d[i] = d[i]+1 else: d[i] = 1 d = dict(sorted(d.items(),key=lambda d:d[1],reverse=True)) print (d) return d.keys()
d={"ok":1,"no":2} #对字典按键排序,用元组列表的形式返回 d1 = sorted(d.items(), key=lambda d:d[0],reverse = False) #[('no', 2), ('ok', 1)] #对字典按值排序,用元组列表的形式返回 d2 = sorted(d.items(), key=lambda d:d[1],reverse = True) #[('ok', 1), ('no', 2)] print d1,'\n',d2
``` public class test{ public static void main(String[] args) { System.out.println(3&9); // 0011 & 1001 = 0001 -->1 System.out.println(3|9); // 0011 | 1001 = 1011 -->11 } } ```