Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

β€Žsolution/0001.Two Sum/Solution.csβ€Ž

Lines changed: 1 addition & 1 deletion
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
{

β€Žsolution/0037.Sudoku Solver/Solution.csβ€Ž

Lines changed: 6 additions & 6 deletions
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
}

β€Žsolution/0054.Spiral Matrix/Solution.csβ€Ž

Lines changed: 9 additions & 9 deletions
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
}

β€Žsolution/0056.Merge Intervals/Solution.csβ€Ž

Lines changed: 7 additions & 7 deletions
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
}

β€Žsolution/0057.Insert Interval/Solution.csβ€Ž

Lines changed: 8 additions & 8 deletions
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
}
Lines changed: 8 additions & 8 deletions
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+
}

β€Žsolution/0085.Maximal Rectangle/Solution.csβ€Ž

Lines changed: 4 additions & 4 deletions
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
}

β€Žsolution/0127.Word Ladder/Solution.csβ€Ž

Lines changed: 53 additions & 52 deletions
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)

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /