diff --git a/internal/leetcode/problems_status.go b/internal/leetcode/problems_status.go index dd94a0ac4..9bf58a52b 100644 --- a/internal/leetcode/problems_status.go +++ b/internal/leetcode/problems_status.go @@ -100,6 +100,7 @@ var problemStatus = map[int]bool{ 344: true, 345: true, 350: true, + 367: true, 371: true, 383: true, 387: true, diff --git a/problems/valid-perfect-square/valid_perfect_square.go b/problems/valid-perfect-square/valid_perfect_square.go index 15910f848..7bb0af941 100644 --- a/problems/valid-perfect-square/valid_perfect_square.go +++ b/problems/valid-perfect-square/valid_perfect_square.go @@ -1 +1,8 @@ package problem367 + +func isPerfectSquare(num int) bool { + for i := 1; num > 0; i += 2 { + num -= i + } + return num == 0 +} diff --git a/problems/valid-perfect-square/valid_perfect_square_test.go b/problems/valid-perfect-square/valid_perfect_square_test.go index 15910f848..258f035eb 100644 --- a/problems/valid-perfect-square/valid_perfect_square_test.go +++ b/problems/valid-perfect-square/valid_perfect_square_test.go @@ -1 +1,39 @@ package problem367 + +import "testing" + +type testType struct { + in int + want bool +} + +func TestIsPerfectSquare(t *testing.T) { + tests := [...]testType{ + { + in: 16, + want: true, + }, + { + in: 14, + want: false, + }, + { + in: 0, + want: true, + }, + { + in: 1, + want: true, + }, + { + in: 3, + want: false, + }, + } + for _, tt := range tests { + got := isPerfectSquare(tt.in) + if got != tt.want { + t.Fatalf("in: %v, got: %v, want: %v", tt.in, got, tt.want) + } + } +}