摘要:
##(1)问题描述 用分分治法编写一个求解凸包问题的算法,并测试算法的正确性。 【注:凸包问题】给定平面上n个点,从中找出一个最小点集,使该点集所组成的凸多边形包围所有的n个点。 ##(2)问题分析 将n个点分为两部分,则每一部分可以形成一个凸包,重复分下去最后将多个凸包合并即可得到n个点的凸包。 阅读全文
摘要:
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。 每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。 示例: 输入: 4 输出: [ [ 阅读全文
摘要:
分析: 题目要求求得的是背包容量为c,有n个物品可选时的最大价值。很明显它有一个子结构,题目要求的结果可表示为dp[n][c],子问题dp[i][j] 表示背包容量为j,可选择物品为1~i时的最大价值。 状态转移公式为: 当j<w[i]时,dp[i][j]=dp[i-1][j] 当w[i]<=j<= 阅读全文
摘要:
你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1] 给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习? 示例2: 输入 阅读全文
摘要:
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。 ##方法一 分析: 斜线上的元素在原字 阅读全文
摘要:
Java8与JDK1.8与JDK8与J2SE8与J2SE1.8的区别是什么? Java是面向对象的编程语言,在我们开发Java应用的程序员的专业术语里,Java这个单词其实指的是Java开发工具,也就是JDK(Java Development Kit)。 ##(1)Java与JDK的区别与关系 因为 阅读全文
摘要:
给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: board = [ ['A','B','C','E'], ['S','F','C','S' 阅读全文
摘要:
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 解答: vector<vecto 阅读全文
摘要:
给定一个没有重复数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 方法一:不用swap回溯状态 第二个swap函数的作用是保证在整个for循环中,每一次循环开 阅读全文
摘要:
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。 示例: 输入:n = 3 输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ] ##解法一 又臭又长,还超时。 vector<string> ans; 阅读全文