摘要: 题目 0~n-1这n个数字排成一个圆圈,从0开始,每次删除第m个数字,求出圆圈里剩下的最后一个数字 思路 直接用数组模拟圆圈,模拟删除的过程 阅读全文
posted @ 2018-07-22 22:39 Heisenber9 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 题目 从扑克牌中随机抽5张牌,判断是不是一个顺子。2~10为本身,A是1,J,Q,K分别是11,12,13。大小王百搭 思路 关键就是大小王百搭。把大小王都当作0。 我们先统计出数组中0的个数 然后将数组排序,统计不连续的空缺总数 最后判断0的个数是否比空缺总数大 阅读全文
posted @ 2018-07-22 22:12 Heisenber9 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 题目一 给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。例如,{2,3,4,2,6,2,5,1}以及窗口大小3,那么存在6个滑动窗口,最大值分别为{4,4,6,6,6,5} 滑动 思路 滑动窗口可以看作是队列,为了得到滑动窗口的最大值,队列可以从两端删除元素,因此使用双向队列。 原则:对 阅读全文
posted @ 2018-07-22 18:35 Heisenber9 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 题目一 输入英文句子,翻转句子中单词的顺序,但单词内字符顺序不变,标点当作普通字母处理。 如I am a student. 输出student a am i 思路 第一步翻转整个句子,.tneduts a ma I 第二次翻转每个单词,student. a am I (代码用了reverse函数,也 阅读全文
posted @ 2018-07-22 17:52 Heisenber9 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 题目一 输入一个递增排序数组和一个数字s,在数组中查找两个数,使得和为s。如果有多对数字和为s,则输出任意一对。 思路 num1和num2分别代表数组的第一个和最后一个 若 num1 + num2 > s,则将num2向前 若num1 + num2 < s, 则将num1后移 直到找到 题目二 输入 阅读全文
posted @ 2018-07-22 17:07 Heisenber9 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 题目一 一个整型数组里除两个数字之外,其他数字都出现了两次。请找出这个两个只出现一次的数字,时间复杂度O(n),空间复杂度O(1) 思路 哈希表不可行,因为要求不开辟新空间。 排序也不可取,最快排序也要O(nlogn) 这方法很有趣,首先看如何在一个数组中找出一个只出现一次的数字,其他数字都是出现两 阅读全文
posted @ 2018-07-22 16:55 Heisenber9 阅读(944) 评论(0) 推荐(0) 编辑
摘要: 题目一 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 思路 若一棵树只有根节点,则深度为1 若根节点只有左子树或者只有右子树,则深度为左子树或右子树的深度+1 若根节点有左右子树,则深度为左右子树深度较大值+1 很明显这是递 阅读全文
posted @ 2018-07-22 16:30 Heisenber9 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 题目 给定一颗二叉搜索树,找出其中第k大的节点(从小到大),返回其节点 思路一 最朴素的想法,中序遍历就是二叉搜索树的递增序列,那直接写出整棵树的中序遍历即可 递归版本 同时也应该掌握非递归版本 思路二 我们只需得到从小到大的第k个数,没有必要全部遍历。根据中序的思想,可以用一个count计数。 递 阅读全文
posted @ 2018-07-22 14:42 Heisenber9 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 题目一 统计一个数字在排序数组中出现的次数。 思路一 当然可以无脑用哈希表,空间复杂度O(n),时间复杂度O(1) 思路二 哈希表法其实没有利用排序数组的条件。在排序数组中,可以用二分法来寻找k 但问题出在,就算我们找到了数组中间的数等于k,我们还是需要向左向右遍历找到头和尾,在这一步上会花很大的复 阅读全文
posted @ 2018-07-22 00:08 Heisenber9 阅读(507) 评论(0) 推荐(0) 编辑