Skip to content

Commit 545e909

Browse files
committed
Update code due to update of test cases and interfaces
1 parent 8653801 commit 545e909

File tree

22 files changed

+246
-378
lines changed

22 files changed

+246
-378
lines changed

Diff for: solution/0001.Two Sum/Solution.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public int[] TwoSum(int[] nums, int target) {
88
int index;
99
if (dict.TryGetValue(target - nums[i], out index))
1010
{
11-
return new [] { index + 1, i + 1};
11+
return new [] { index, i};
1212
}
1313
if (!dict.ContainsKey(nums[i]))
1414
{

Diff for: solution/0037.Sudoku Solver/Solution.cs

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
public class Solution {
2-
public void SolveSudoku(char[,] board) {
2+
public void SolveSudoku(char[][] board) {
33
this.board = new ushort?[9,9];
44
for (var i = 0; i < 9; ++i)
55
{
66
for (var j = 0; j < 9; ++j)
77
{
8-
if (board[i, j] != '.')
8+
if (board[i][j] != '.')
99
{
10-
this.board[i, j] = (ushort) (1 << (board[i, j] - '0' - 1));
10+
this.board[i, j] = (ushort) (1 << (board[i][j] - '0' - 1));
1111
}
1212
}
1313
}
@@ -18,12 +18,12 @@ public void SolveSudoku(char[,] board) {
1818
{
1919
for (var j = 0; j < 9; ++j)
2020
{
21-
if (board[i, j] == '.')
21+
if (board[i][j] == '.')
2222
{
23-
board[i, j] = '0';
23+
board[i][j] = '0';
2424
while (this.board[i, j].Value != 0)
2525
{
26-
board[i, j] = (char)(board[i, j] + 1);
26+
board[i][j] = (char)(board[i][j] + 1);
2727
this.board[i, j] >>= 1;
2828
}
2929
}

Diff for: solution/0054.Spiral Matrix/Solution.cs

+9-9
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
using System.Collections.Generic;
33

44
public class Solution {
5-
public IList<int> SpiralOrder(int[,] matrix) {
6-
var lenI = matrix.GetLength(0);
7-
var lenJ = matrix.GetLength(1);
5+
public IList<int> SpiralOrder(int[][] matrix) {
6+
var lenI = matrix.Length;
7+
var lenJ = lenI == 0 ? 0 : matrix[0].Length;
88
var result = new List<int>(lenI * lenJ);
99
var rounds = (Math.Min(lenI, lenJ) + 1) / 2;
1010
for (var r = 0; r < rounds; ++r)
@@ -13,33 +13,33 @@ public IList<int> SpiralOrder(int[,] matrix) {
1313
{
1414
for (var j = r; j < lenJ - r; ++j)
1515
{
16-
result.Add(matrix[r, j]);
16+
result.Add(matrix[r][j]);
1717
}
1818
}
1919
else if (lenJ - r * 2 == 1)
2020
{
2121
for (var i = r; i < lenI - r; ++i)
2222
{
23-
result.Add(matrix[i, r]);
23+
result.Add(matrix[i][r]);
2424
}
2525
}
2626
else
2727
{
2828
for (var j = r; j < lenJ - r - 1; ++j)
2929
{
30-
result.Add(matrix[r, j]);
30+
result.Add(matrix[r][j]);
3131
}
3232
for (var i = r; i < lenI - r - 1; ++i)
3333
{
34-
result.Add(matrix[i, lenJ - r - 1]);
34+
result.Add(matrix[i][lenJ - r - 1]);
3535
}
3636
for (var j = lenJ - r - 1; j > r; --j)
3737
{
38-
result.Add(matrix[lenI - r - 1, j]);
38+
result.Add(matrix[lenI - r - 1][j]);
3939
}
4040
for (var i = lenI - r - 1; i > r; --i)
4141
{
42-
result.Add(matrix[i, r]);
42+
result.Add(matrix[i][r]);
4343
}
4444
}
4545
}

Diff for: solution/0056.Merge Intervals/Solution.cs

+7-7
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
using System.Linq;
33

44
public class Solution {
5-
public IList<Interval> Merge(IList<Interval> intervals) {
6-
var result = new List<Interval>();
7-
foreach (var interval in intervals.OrderBy(i => i.start))
5+
public int[][] Merge(int[][] intervals) {
6+
var result = new List<int[]>();
7+
foreach (var interval in intervals.OrderBy(i => i[0]))
88
{
99
if (!result.Any())
1010
{
@@ -13,16 +13,16 @@ public IList<Interval> Merge(IList<Interval> intervals) {
1313
else
1414
{
1515
var last = result.Last();
16-
if (last.end < interval.start)
16+
if (last[1] < interval[0])
1717
{
1818
result.Add(interval);
1919
}
20-
else if (last.end < interval.end)
20+
else if (last[1] < interval[1])
2121
{
22-
last.end = interval.end;
22+
last[1] = interval[1];
2323
}
2424
}
2525
}
26-
return result;
26+
return result.ToArray();
2727
}
2828
}

Diff for: solution/0057.Insert Interval/Solution.cs

+8-8
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,28 @@
22
using System.Collections.Generic;
33

44
public class Solution {
5-
public IList<Interval> Insert(IList<Interval> intervals, Interval newInterval) {
6-
var result = new List<Interval>();
5+
public int[][] Insert(int[][] intervals, int[] newInterval) {
6+
var result = new List<int[]>();
77
var i = 0;
88

9-
while (i < intervals.Count && intervals[i].end < newInterval.start)
9+
while (i < intervals.Length && intervals[i][1] < newInterval[0])
1010
{
1111
result.Add(intervals[i++]);
1212
}
1313

14-
while (i < intervals.Count && intervals[i].start <= newInterval.end && intervals[i].end >= newInterval.start)
14+
while (i < intervals.Length && intervals[i][0] <= newInterval[1] && intervals[i][1] >= newInterval[0])
1515
{
16-
newInterval.start = Math.Min(intervals[i].start, newInterval.start);
17-
newInterval.end = Math.Max(intervals[i].end, newInterval.end);
16+
newInterval[0] = Math.Min(intervals[i][0], newInterval[0]);
17+
newInterval[1] = Math.Max(intervals[i][1], newInterval[1]);
1818
++i;
1919
}
2020
result.Add(newInterval);
2121

22-
while (i < intervals.Count)
22+
while (i < intervals.Length)
2323
{
2424
result.Add(intervals[i++]);
2525
}
2626

27-
return result;
27+
return result.ToArray();
2828
}
2929
}

Diff for: solution/0079.Word Search/Solution.cs

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
public class Solution {
2-
public bool Exist(char[,] board, string word) {
3-
var lenI = board.GetLength(0);
4-
var lenJ = board.GetLength(1);
2+
public bool Exist(char[][] board, string word) {
3+
var lenI = board.Length;
4+
var lenJ = lenI == 0 ? 0 : board[0].Length;
55
var visited = new bool[lenI, lenJ];
66
for (var i = 0; i < lenI; ++i)
77
{
@@ -15,17 +15,17 @@ public bool Exist(char[,] board, string word) {
1515
}
1616
return false;
1717
}
18-
18+
1919
private int[,] paths = new int[4,2] { { -1, 0 }, { 1, 0 }, { 0, -1 }, { 0, 1 } };
20-
21-
private bool Search(char[,] board, bool[,] visited, string word, int lenI, int lenJ, int i, int j, int p)
20+
21+
private bool Search(char[][] board, bool[,] visited, string word, int lenI, int lenJ, int i, int j, int p)
2222
{
2323
if (p == word.Length)
2424
{
2525
return true;
2626
}
2727
if (i < 0 || i >= lenI || j < 0 || j >= lenJ) return false;
28-
if (visited[i, j] || word[p] != board[i, j]) return false;
28+
if (visited[i, j] || word[p] != board[i][j]) return false;
2929
visited[i, j] = true;
3030
for (var k = 0; k < 4; ++k)
3131
{
@@ -34,4 +34,4 @@ private bool Search(char[,] board, bool[,] visited, string word, int lenI, int l
3434
visited[i, j] = false;
3535
return false;
3636
}
37-
}
37+
}

Diff for: solution/0085.Maximal Rectangle/Solution.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,16 @@ private int MaximalRectangleHistagram(int[] height) {
2525
return result;
2626
}
2727

28-
public int MaximalRectangle(char[,] matrix) {
29-
var lenI = matrix.GetLength(0);
30-
var lenJ = matrix.GetLength(1);
28+
public int MaximalRectangle(char[][] matrix) {
29+
var lenI = matrix.Length;
30+
var lenJ = lenI == 0 ? 0 : matrix[0].Length;
3131
var height = new int[lenJ];
3232
var result = 0;
3333
for (var i = 0; i < lenI; ++i)
3434
{
3535
for (var j = 0; j < lenJ; ++j)
3636
{
37-
if (matrix[i, j] == '1')
37+
if (matrix[i][j] == '1')
3838
{
3939
++height[j];
4040
}

Diff for: solution/0127.Word Ladder/Solution.cs

+53-52
Original file line numberDiff line numberDiff line change
@@ -3,65 +3,66 @@
33
using System.Linq;
44

55
public class Solution {
6-
public int LadderLength(string beginWord, string endWord, ISet<string> wordDict) {
7-
if (beginWord == endWord) return 1;
8-
wordDict.Remove(beginWord);
9-
wordDict.Remove(endWord);
10-
var words = new [] { beginWord, endWord }.Concat(wordDict.Where(word => word.Length == beginWord.Length)).Select((word, i) => new { Word = word, Index = i }).ToList();
11-
12-
var paths = new List<int>[words.Count];
13-
for (var i = 0; i < paths.Length; ++i)
14-
{
15-
paths[i] = new List<int>();
16-
}
17-
for (var i = 0; i < beginWord.Length; ++i)
18-
{
6+
public int LadderLength(string beginWord, string endWord, IList<string> wordList) {
7+
var words = Enumerable.Repeat(beginWord, 1).Concat(wordList).Select((word, i) => new { Word = word, Index = i }).ToList();
8+
var endWordIndex = words.Find(w => w.Word == endWord)?.Index;
9+
if (endWordIndex == null) {
10+
return 0;
11+
}
12+
13+
var paths = new List<int>[words.Count];
14+
for (var i = 0; i < paths.Length; ++i)
15+
{
16+
paths[i] = new List<int>();
17+
}
18+
for (var i = 0; i < beginWord.Length; ++i)
19+
{
1920
var hashMap = new Hashtable();
2021
foreach (var item in words)
2122
{
2223
var newWord = string.Format("{0}_{1}", item.Word.Substring(0, i), item.Word.Substring(i + 1));
23-
List<int> similars;
24+
List<int> similars;
2425
if (!hashMap.ContainsKey(newWord))
25-
{
26-
similars = new List<int>();
27-
hashMap.Add(newWord, similars);
28-
}
29-
else
30-
{
31-
similars = (List<int>)hashMap[newWord];
32-
}
33-
foreach (var similar in similars)
34-
{
35-
paths[similar].Add(item.Index);
36-
paths[item.Index].Add(similar);
37-
}
26+
{
27+
similars = new List<int>();
28+
hashMap.Add(newWord, similars);
29+
}
30+
else
31+
{
32+
similars = (List<int>)hashMap[newWord];
33+
}
34+
foreach (var similar in similars)
35+
{
36+
paths[similar].Add(item.Index);
37+
paths[item.Index].Add(similar);
38+
}
3839
similars.Add(item.Index);
3940
}
40-
}
41-
42-
var left = words.Count - 1;
43-
var lastRound = new List<int> { 0 };
44-
var visited = new bool[words.Count];
45-
visited[0] = true;
46-
for (var result = 2; left > 0; ++result)
47-
{
48-
var thisRound = new List<int>();
49-
foreach (var index in lastRound)
50-
{
51-
foreach (var next in paths[index])
52-
{
53-
if (!visited[next])
54-
{
55-
visited[next] = true;
56-
if (next == 1) return result;
57-
thisRound.Add(next);
58-
}
59-
}
60-
}
41+
}
42+
43+
var left = words.Count - 1;
44+
var lastRound = new List<int> { 0 };
45+
var visited = new bool[words.Count];
46+
visited[0] = true;
47+
for (var result = 2; left > 0; ++result)
48+
{
49+
var thisRound = new List<int>();
50+
foreach (var index in lastRound)
51+
{
52+
foreach (var next in paths[index])
53+
{
54+
if (!visited[next])
55+
{
56+
visited[next] = true;
57+
if (next == endWordIndex) return result;
58+
thisRound.Add(next);
59+
}
60+
}
61+
}
6162
if (thisRound.Count == 0) break;
62-
lastRound = thisRound;
63-
}
64-
65-
return 0;
63+
lastRound = thisRound;
64+
}
65+
66+
return 0;
6667
}
6768
}

0 commit comments

Comments
 (0)