2017-09-10 11 views
0

私は新しいです。私は初心者の誤りであると確信しています。私が減算しているところで、一見どこでもエラーinvalid identifier character U+2013が発生しています。算術演算子を正しく使用しない方法はありますか?私はまた、エラーunexpected name, expecting semicolon or newline or }non-declaration statement outside function bodyを取得していますが、私はそれが何を引き起こしているかについてもあまりよく分かりません。主に、forループの上のif文の中に問題があるようです。すでに宣言されている変数を再割り当てしているためだと思っていましたが、そうではありません。どんな助けも非常に高く評価され、誰かがデバッグのための一般的なヒントを持っていればそれも素晴らしいでしょう。2つのソートされた配列のうち、最大のk'th番目

package main 

import "fmt" 


func main() { 
    a := []int{ 
     13, 14, 15, 16, 17, 
    } 

    b := []int{ 
     1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
    } 

    k := 8 

    result := kthSmallest(a, b, k) 
    fmt.Printf("%v", result) 

} 

func kthSmallest(a []int, b []int, k int) int { 
    if k >= len(a) + len(b) { 
     fmt.Printf("The range is not large enough") 
     return 0 
    } 

    var lowA, lowB, highA, highB int = 0, 0, k - 1, k - 1 

    if len(a) < k - 1 { 
     highA = len(a) - 1; 
    } 

    if len(b) < k - 1 { 
     highB = len(b) - 1; 
    } 

    if highA + highB < k { 
     return 0; 
    } 

    var midA, midB int = 0, 0 
    var result int = 0 

    for k > 0 { 
     midA = lowA + (highA - lowA)/2; 
     midB = lowB + (highB - lowB)/2; 

     if a[midA] >= b[midB] { 

      k = k - (midB - lowB + 1); 
      result = b[midB]; 
      highA = midA - 1; 
      lowB = midB + 1; 

     } else if a[midA] < b[midB] { 

      k = k - (midA - lowA + 1); 
      result = a[midA]; 
      highB = midB - 1; 
      lowA = midA + 1; 

     } 

    } 


    return result 
} 

答えて

3

U+2013は(または ' - ') - タイポグラフィに大きなされている人々のための(またはU+2d) '' の派手なバージョンです。キーボードにダッシュを打つと、正しい文字が得られます。ウェブサイト、ワープロ、電子メールから何かをコピーした場合は、間違ったダッシュを付けて「有益に」置き換えられた可能性がありますゴーは理解していない。これはまた、二重引用符文字で多く発生します。

あなたは、テキストエディタまたはIDEでファンシーダッシュを検索して置き換えることができるはずです。

+0

まあ、それはやるよ。ありがとうございました! – tim

+0

私のコードを更新しましたが、まだ少し問題があります。 'k'の値が2から6に設定されているとうまくいくように見えますが、1に設定されている場合、' result'は1になるように0に設定されます.7に設定すると 'result' 3で7よりも高く設定すると、実行がタイムアウトします。私の論理に誤りがあるのを見ているだけですか? – tim

+0

私はそれを理解しました。再度、感謝します。 – tim

関連する問題