随笔分类 - 算法题
摘要:题目: 环形路上有n个加油站,第i个加油站的汽油量是gas[i]. 你有一辆车,车的油箱可以无限装汽油。从加油站i走到下一个加油站(i+1)花费的油量是cost[i],你从一个加油站出发,刚开始的时候油箱里面没有汽油。 求从哪个加油站出发可以在环形路上走一圈。返回加油站的下标,如果没有答案的话返回-
阅读全文
摘要:题目: 有N个小朋友站在一排,每个小朋友都有一个评分 你现在要按以下的规则给孩子们分糖果: 每个小朋友至少要分得一颗糖果 分数高的小朋友要他比旁边得分低的小朋友分得的糖果多 你最少要分发多少颗糖果? 示例: 输入:[1, 2, 2] 输出:4 代码: 1 import java.util.*; 2
阅读全文
摘要:题目: 现在有一个整数类型的数组,数组中素只有一个元素只出现一次,其余的元素都出现两次。 示例: 输入:[1, 0, 1] 输出:0 代码: 1 import java.util.*; 2 3 4 public class Solution { 5 /** 6 * 7 * @param A int整
阅读全文
摘要:题目: 现在有一个整数类型的数组,数组中只有一个元素只出现一次,其余元素都出现三次。你需要找出只出现一次的元素 示例: 输入 [0,0,0,5] 输出:5 代码: 1 public int singleNumber(int[] A) { 2 int ones = 0;//记录只出现过1次的bits
阅读全文
摘要:题目: 求给定的二叉树的前序遍历。 例如: 给定的二叉树为{1,#,2,3}, 1 2 / 3 返回:[1,2,3] 代码: 1 /** 2 * struct TreeNode { 3 * int val; 4 * struct TreeNode *left; 5 * struct TreeNode
阅读全文
摘要:题目: 将给定的单链表L: L 0→L 1→…→L n-1→L n, 重新排序为: L 0→L n →L 1→L n-1→L 2→L n-2→… 要求使用原地算法,并且不改变节点的值 例如: 对于给定的单链表{1,2,3,4},将其重新排序为{1,4,2,3}. Given a singly lin
阅读全文
摘要:题目: 对于一个给定的链表,返回环的入口节点,如果没有环,返回null 拓展: 你能给出不利用额外空间的解法么? Given a linked list, return the node where the cycle begins. If there is no cycle, returnnull
阅读全文
摘要:题目: 在O(n log n)的时间内使用常数级空间复杂度对链表进行排序。 Sort a linked list in O(n log n) time using constant space complexity. 示例; 输入:{3,2,4} 输出:{2,3,4} 代码: 1 /** 2 * s
阅读全文
摘要:题目: 使用插入排序对链表进行排序。 Sort a linked list using insertion sort. 示例: 输入:{3,2,4} 输出:{2,3,4} 代码: 1 /** 2 * struct ListNode { 3 * int val; 4 * struct ListNode
阅读全文
摘要:题目: 求给定的二叉树的后序遍历。 例如: 给定的二叉树为{1,#,2,3}, 返回[3,2,1]. 备注;用递归来解这道题太没有新意了,可以给出迭代的解法么? 示例: 输入:{1,#,2,3} 输出:[3,2,1] 代码: 1 /** 2 * struct TreeNode { 3 * int v
阅读全文
摘要:题目: 对于给定的n个位于同一二维平面上的点,求最多能有多少个点位于同一直线上 Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. 示例: 输入:[(0
阅读全文
摘要:题目: 计算逆波兰式(后缀表达式)的值 运算符仅包含"+","-","*"和"/",被操作数可能是整数或其他表达式 例如: 示例: 输入:["2", "1", "+", "3", "*"] 输出:9 代码: 1 class Solution { 2 public: 3 /** 4 * 5 * @pa
阅读全文
摘要:题目: 求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。 Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest
阅读全文
摘要:题目: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 代码:
阅读全文
摘要:题目: 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],
阅读全文
摘要:题目: 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不
阅读全文
摘要:题目: 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5
阅读全文
摘要:题目: 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m]。请问k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是1
阅读全文
摘要:题目: 给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 代码: 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNod
阅读全文
摘要:题目: 请实现两个函数,分别用来序列化和反序列化二叉树 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点
阅读全文