🌓

组合问题。给定两个整数 nk,返回从 1 ~ n 中选取 k 个数能构成的所有组合。

典型的回溯算法应用题,需要注意去重的思路。

阅读全文 »

字符串问题。一个字符串数字,你需要判断这个数字是否有效。需要满足一堆条件。

考验归纳的问题。我们从正则取巧和数学归纳的角度来解决这道题。

阅读全文 »

路径问题。一个机器人在 m x n 矩阵的左上角 (0, 0) 位置,矩阵中存在诺干障碍物,机器人只能向下或者向右移动,你需要实现一个程序计算机器人有多少条路径可以到达右下角的 (m, n) 位置。

这是典型的 DP 问题。

阅读全文 »

组合问题。机器人在矩阵的左上角需要去矩阵的右下角,且机器人只能向下和向右行动。

你需要实现一个程序计算机器人有多少条路径到达右下角。

阅读全文 »

国际象棋问题。求在 n x n 的棋盘上摆放 Queen 棋子并让其不能相互攻击的布局数量。

和 51 是孪生问题,不再赘述。

阅读全文 »

国际象棋问题。给你一个 n x n 大小的棋盘,你需要在上面摆放 Queen 棋子,并且让棋子之间不能相互攻击。

Tips

Queen 可以在行、列、对角线和反对角线这四条线上随意行动,我们在放 Queen 时要保证这四个方向上没有 Queen 存在。

我们需要遍历尽可能多的摆放方法才能确认最终的答案,我们用回溯算法对枚举进行剪纸来解决这道题。

阅读全文 »

矩阵问题。旋转图片 90 度。

图片本身是一组储存了颜色信息的矩阵数据,旋转一张图片即将矩阵中对应的颜色值移动到对应的位置上。

阅读全文 »

跳跃游戏。你有一个非负整数数组,最开始你在 0 的位置,数组每个数字意味你接下来能跳多远。

游戏的目标是到达数组的最后一个位置,你需要找到最少的跳跃次数到达终点。

阅读全文 »

先读题,这种题真是脑细胞的初见杀。

Given an array of distinct integers candidates and a target integer target, return a list of all unique combinations of candidates where the chosen numbers sum to target. You may return the combinations in any order.

The same number may be chosen from candidates an unlimited number of times. Two combinations are unique if the frequency of at least one of the chosen numbers is different.

It is guaranteed that the number of unique combinations that sum up to target is less than 150 combinations for the given input.

阅读全文 »

数独问题。你需要实现一个游戏解决数独问题,数独游戏的规则如下:

  • 每一行中数字 1 - 9 只能出现一次;
  • 每一列中数字 1 - 9 只能出现一次;
  • 每个 3 x 3 的子矩阵中数字 1 - 9 只能出现一次。

典型的回溯算法问题。

阅读全文 »