机试题

228 阅读1分钟

python

处理输入

# 可以处理多个(不定个数)输入的情况
while True:
    try:
        x = input()
        # if something:
        #     break
    except:
        break
        
# 一次读入所有行(在IDE中调试不友好)
import sys
lines = sys.stdin.readlines()
lines = [line.strip() for line in lines]

常用数据结构

# deque 功能强大,可以当作stack和queue使用
from collections import deque
dq = deque()
len(dq)
# 右进左出
dq.append()
dq.popleft()
# 其他
dq.appendleft()
dq.pop()
dq.reverse()
dq.clear()
dq.count(val) # count the number with the given val
dq.index(val) # 从左往右第一个值为val的下标
dq.remove(val) # 从左往右删除第一个值为val的
dq.rotate(step) # 循环右移step次,负数变成左移
dq.extend([some list])

# PriorityQueue 注意是小根堆 不是特别好用
from queue import PriorityQueue
q = PriorityQueue()
q.empty()
q.queue  # 返回原始(没排序)的list
q.qsize()
q.put()
q.get()  # 没有top()	

code snippet

# Definition for singly-linked list.
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None
        
# Definition for a binary tree node.
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

C++

处理输入

int n;
while (cin >> n) {
	int x;
	while (n--) cin >> x; 
}

常用数据结构

#include <stack>
stack<int> sk;

#include <unordered_map>
unordered_map<char, int> cnt;

#include <unordered_set>
unordered_set<int> uniq;

#include <algorithm>
// 默认排序从小到大
sort(vec.begin(), vec.end());
// 从大到小 第一种
bool cmp(int x, int y) {
	// 把大的放在前面
	return x > y;
}
sort(a, a + n, cmp);
// 从大到小 第二种
sort(a, a + n, greater<int>());

#include <queue>
queue<int> que;

#include <queue>
priority_queue<int> pq;  // 大根堆
priority_queue<int, vector<int>, greater<int>> pq;  // 小根堆

code snippet

// Definition for singly-linked list.
struct ListNode {
    int val;
    ListNode *next;
    ListNode() : val(0), next(nullptr) {}
    ListNode(int x) : val(x), next(nullptr) {}
    ListNode(int x, ListNode *next) : val(x), next(next) {}
};
 
 
// Definition for a binary tree node.
struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode() : val(0), left(nullptr), right(nullptr) {}
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 };