面试算法经典问题

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
    }
}
```

 

posted @ 2019-03-07 13:29  心悦飞飞  阅读(418)  评论(0编辑  收藏  举报