81.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package main
  2. // ??? so many problems here
  3. /* func search(nums []int, target int) bool {
  4. if len(nums) == 0 {
  5. return false
  6. }
  7. beg, end := 0, len(nums)-1
  8. var mid int
  9. // how to find the smallest num of arr?
  10. for beg < end {
  11. mid = (beg + end) / 2
  12. if nums[mid] > nums[end] {
  13. beg = mid + 1
  14. } else if nums[mid] < nums[end] {
  15. end = mid - 1
  16. } else {
  17. for nums[mid] < nums[(mid+1)%len(nums)] {
  18. mid = (mid + len(nums) - 1) % len(nums)
  19. }
  20. break
  21. }
  22. }
  23. fmt.Println(mid)
  24. if target == nums[mid] {
  25. return true
  26. }
  27. if target < nums[0] {
  28. beg, end = mid+1, len(nums)-1
  29. } else {
  30. beg, end = 0, mid-1
  31. }
  32. for beg <= end {
  33. mid = (beg + end) / 2
  34. if target < nums[mid] {
  35. end = mid - 1
  36. } else if target > nums[mid] {
  37. beg = mid + 1
  38. } else {
  39. return true
  40. }
  41. }
  42. return false
  43. } */
  44. /* func main() {
  45. a1 := []int{4, 5, 6, 6, 6, 7, 7, 0, 0, 1, 1, 2, 2, 3}
  46. fmt.Println(search(a1, 6))
  47. fmt.Println(search(a1, 4))
  48. fmt.Println(search(a1, 3))
  49. fmt.Println(search(a1, 7))
  50. fmt.Println(search(a1, 9))
  51. a2 := []int{1, 3}
  52. fmt.Println(search(a2, 3))
  53. a3 := []int{3, 1}
  54. fmt.Println(search(a3, 3))
  55. fmt.Println(search(a3, 1))
  56. } */