队列的最大值 题目1:滑动窗口的最大值。给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。比如,给定数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么滑动窗口的最大值为{4,4,6,6,6,5}。 …
标签:基础算法
翻转字符串
翻转字符串 题目1:翻转单词顺序。 输入一个英文句子,翻转句子中的单词顺序,但单词内字符的顺序不变。 思路:第一步翻转句子中所有字符,第二步翻转每个单词中的字符的顺序。 参考代码: root@gt:/home/git/C…
和为s的数字
和为s的数字 题目1:和为s的2个数字。 输入一个递增排序的数组和一个数字s,在数组中查找两个数字,使得它们的和正好是s。 思路:定义2个指针,一个指向最小的,一个指向最大的。它们的和如果大于s,则最大的指针向左移动。如…
数组中数字出现的次数
数组中数字出现的次数 题目1:数组中只出现1次的2个数字。 一个整形数组中除2个数字之外,其他数字都出现了2次。请找出这2个数字。 思路:任何一个数字异或它自己都等于0。如果异或整个数组,得到的结果就是数组中唯一出现一次…
二叉树的深度
二叉树的深度 输入一颗二叉树的根节点,求该树的深度。从根节点到叶子节点依次经过的节点形成树的一条路径,最长路径的长度为树的深度。 思路:树的高度为max(左子树的高度,右子树的高度)+1. 参考代码: root@gt:/…
二叉搜索树的第k小节点
二叉搜索树的第k小节点 给定一颗二叉搜索树,请找出其中第k小的节点。 思路:二叉搜索树中序遍历是有序递增的。 参考代码: #include <stdio.h> #include <stdlib.h>…
在排序数组中查找数字
在排序数组中查找数字 题目1:数字在排序数组中出现的次数 统计一个数字在排序数组中出现的次数。例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3出现了4次,因此输出4. 思路:2分查找数组中的第一个k:…