|
1 | 1 | # -*- coding: UTF-8 -*- |
| 2 | +from itertools import permutations |
| 3 | +from common_utils import Interval |
2 | 4 |
|
3 | 5 | class Solution_51_60: |
| 6 | + def solveNQueens(self, n): |
| 7 | + """ |
| 8 | + 51 |
| 9 | + :type n: int |
| 10 | + :rtype: List[List[str]] |
| 11 | + """ |
| 12 | + outputs = [] |
| 13 | + for candidate in permutations(range(0, n)): |
| 14 | + left_triangle = {v - i for i, v in enumerate(candidate)} |
| 15 | + right_triangle = {v + i for i, v in enumerate(candidate)} |
| 16 | + if len(left_triangle) == len(right_triangle) == n: |
| 17 | + output = [] |
| 18 | + for queen in candidate: |
| 19 | + output.append('.' * queen + 'Q' + '.' * (n - 1 - queen)) |
| 20 | + outputs.append(output) |
| 21 | + return outputs |
| 22 | + |
4 | 23 | def spiralOrder(self, matrix): |
5 | 24 | """ |
6 | 25 | problem 54 - Spiral Matrix |
@@ -41,7 +60,26 @@ def spiralOrder(self, matrix): |
41 | 60 | curr_direction = (curr_direction + 1) % 4 |
42 | 61 |
|
43 | 62 | return res |
44 | | - |
| 63 | + def merge(self, intervals): |
| 64 | + """ |
| 65 | + 56 |
| 66 | + :type intervals: List[Interval] |
| 67 | + :rtype: List[Interval] |
| 68 | + """ |
| 69 | + intervals = sorted(intervals, key=lambda i: i.start) |
| 70 | + new_intervals = [] |
| 71 | + last_end = -1 |
| 72 | + last_start = -1 |
| 73 | + for iterval in intervals: |
| 74 | + start, end = iterval.start, iterval.end |
| 75 | + if new_intervals and last_end >= start: |
| 76 | + new_start = start if start < last_start else last_start |
| 77 | + new_end = end if end > last_end else last_end |
| 78 | + new_intervals.pop(-1) |
| 79 | + start, end = new_start, new_end |
| 80 | + new_intervals.append(Interval(start, end)) |
| 81 | + last_start, last_end = start, end |
| 82 | + return new_intervals |
45 | 83 | def lengthOfLastWord(self, s): |
46 | 84 | """ |
47 | 85 | 58 |
|
0 commit comments