iOS面试题汇总---算法类

字符串

【3】最长回文子串

【3】最长无重复子串

【1*】字符串转数字

【4】KMP 算法

【2】字符串全排列

【2*】翻转字符串

动态规划

【2】背包问题

【3】连续子数组的最大和

【4】实现简单的正则表达式匹配

数组

【3】求两个等长、有序数组的中位数(二分法)

【4】求两个不等长、有序数组的中位数

【3】旋转数组求最小值、【3】旋转数组求查找某个值是否存在(二分法)

【4*】每行从左到右,每列从上到下递增的二维数组中,判断某个数是否存在(剑指 offer 第 3 题)

【3*】数组中出现次数超过一半的数字

【3*】第 k 大的数(拓展:最大的 k 个数)

【3*】有序数组中某个数字出现的次数(提示:利用二分搜索)

链表

【2】反转链表(使用递归和迭代两种解法,了解头插法)

【3】删除链表的当前节点

【3】删除倒数第 k 个节点

【1】两个有序链表合并

【4】复杂链表的复制

【2*】判断链表是否有环

【3*】两个链表的第一个公共节点(提示:考虑链表有环的情况)

【3】删除链表中重复节点

【3】根据中序和后序遍历结果重建二叉树、【3】根据中序和前序遍历结果重建二叉树

【2】翻转二叉树

【2】从上往下打印二叉树 (BFS 的思想)

【3】判断某个数组是不是二叉树的后序遍历结果 (剑指 offer 第 24 题)

【3】二叉树中和为某个值的路径

【3*】二叉树中某个节点的下一个节点 (强烈推荐准备一下,剑指 offer 第 58 题)

【2】用两个栈实现队列、【2】用两个队列实现栈

【2】实现一个栈,可以用常数级时间找出栈中的最小值

【3】判断栈的压栈、弹栈序列是否合法(剑指offer 第 22 题)

排序

了解以下排序的时间、空间复杂度,是否稳定,实现原理

归并排序、拓展:求数组中的逆序对个数

快速排序 重点:partion 函数的实现

堆排序

数组元素值域已知时,考虑 基数排序 和 桶排序

位运算

【2】给一个十进制数字,求它的二进制表示中,有多少个 1 (n &= n - 1)

【3】给一个数组,所有数字都出现了偶数次,只有一个出现了一次,找出这个数

【4】给一个数组,所有数字都出现了三次,只有一个出现了一次,找出这个数

【3】给一个数组,所有数组都出现了偶数次,只有两个数字出现了一次,找出这两个数

你可能感兴趣的:(iOS面试题汇总---算法类)