[
  {
    "path": " Day of the Week/kata.py",
    "content": "# math equation by Tomohiko Sakamoto\nclass Solution:\n    def dayOfTheWeek(self, d: int, m: int, y: int) -> str:\n        t = [ 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 ]\n\n        # if month is less than 3 reduce year by 1\n        if (m < 3) :\n            y = y - 1\n\n        f = (y + y // 4 - y // 100 + y // 400 + t[m - 1] + d) % 7\n\n        weekDay = \"\"\n        if f == 6:\n            weekDay = \"Saturday\"\n        elif f == 0:\n            weekDay = \"Sunday\"\n        elif f == 1:\n            weekDay = \"Monday\"\n        elif f == 2:\n            weekDay = \"Tuesday\"\n        elif f == 3:\n            weekDay = \"Wednesday\"\n        elif f == 4:\n            weekDay = \"Thursday\"\n        elif f == 5:\n            weekDay = \"Friday\"\n\n        return weekDay\n        "
  },
  {
    "path": " Find Total Time Spent by Each Employee/q.sql",
    "content": "SELECT event_day AS day, emp_id, SUM(out_time - in_time) AS total_time\nFROM Employees\nGROUP BY event_day, emp_id;"
  },
  {
    "path": " Students With Invalid Departments/q.sql",
    "content": "SELECT id, name FROM Students WHERE department_id NOT IN (SELECT id FROM Departments);"
  },
  {
    "path": ".gitignore",
    "content": "# Binaries for programs and plugins\n*.exe\n*.exe~\n*.dll\n*.so\n*.dylib\n\n# Test binary, built with `go test -c`\n*.test\n\n# Output of the go coverage tool, specifically when used with LiteIDE\n*.out\n\n# Dependency directories (remove the comment below to include it)\n# vendor/\n\n.idea\n"
  },
  {
    "path": "3042. Count Prefix and Suffix Pairs I/kata.py",
    "content": "import itertools\n\nclass Solution:\n    def countPrefixSuffixPairs(self, words: List[str]) -> int:   \n        matched = 0\n        for pair in itertools.combinations(words, 2):\n            if self.isPrefixAndSuffix(pair[0], pair[1]):\n                matched = matched + 1\n\n        return matched    \n            \n    def isPrefixAndSuffix(self, a: str, b :str) -> bool: \n        if len(a) > len(b):\n            return False\n        if a == b[:len(a)] and b[len(b)-len(a):] == a:\n            return True\n        return False         \n\n"
  },
  {
    "path": "3110. Score of a String/main.scala",
    "content": "object Solution {\n    def scoreOfString(s: String): Int = {\n        var sum: Int = 0\n        for (i <- 1 to s.length-1) {\n            sum += (s.charAt(i-1) - s.charAt(i)).abs\n        }\n        return sum\n    }\n}"
  },
  {
    "path": "A Number After a Double Reversal/kata.go",
    "content": "package A_Number_After_a_Double_Reversal\n\nfunc isSameAfterReversals(num int) bool {\n\tif num == 0 {\n\t\treturn true\n\t}\n\treturn num%10 > 0\n}\n"
  },
  {
    "path": "Account Balance/q.sql",
    "content": "SELECT\n    account_id,\n    day,\n    SUM(IF(type = 'Deposit', amount, -amount)) OVER (\n    PARTITION BY account_id\n    ORDER BY\n    day\n    ) AS balance\nFROM\n    Transactions;"
  },
  {
    "path": "Account Balance After Rounded Purchase/kata.go",
    "content": "package kata\n\nfunc accountBalanceAfterPurchase(purchaseAmount int) int {\n    initAccount := 100\n    point := purchaseAmount % 10\n    if point <= 4 {\n      purchaseAmount = purchaseAmount - point\n    } else {\n      purchaseAmount = purchaseAmount + (10 - point)  \n    }\n    return initAccount - purchaseAmount\n}"
  },
  {
    "path": "Accounts Merge/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc accountsMerge(accounts [][]string) [][]string {\n\ttoDelete := make(map[int]bool)\n\tfor {\n\t\tok := merge(accounts, toDelete)\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tpreviousLen := len(accounts)\n\tfor k := 0; k < previousLen; k++ {\n\t\tif !toDelete[k] {\n\t\t\taccounts[k] = emailUnion(accounts[k], 1)\n\t\t\tsort.Slice(accounts[k], func(i, j int) bool {\n\t\t\t\treturn accounts[k][i] < accounts[k][j]\n\t\t\t})\n\t\t\taccounts = append(accounts, accounts[k])\n\t\t}\n\t}\n\treturn accounts[previousLen:]\n}\n\nfunc merge(accounts [][]string, toDelete map[int]bool) bool {\n\temails := make(map[string]int)\n\tfor i, account := range accounts {\n\t\tif toDelete[i] {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, email := range account[1:] {\n\t\t\tv, ok := emails[email]\n\t\t\tif ok && emails[email] != i {\n\t\t\t\taccounts[v] = append(accounts[v], accounts[i][1:]...)\n\t\t\t\ttoDelete[i] = true\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\temails[email] = i\n\t\t}\n\t}\n\treturn false\n}\n\nfunc emailUnion(a []string, startIdx int) []string {\n\tset := make(map[string]bool, len(a)/2)\n\tfor i := startIdx; i < len(a); i++ {\n\t\tset[a[i]] = true\n\t}\n\ta = a[:1]\n\tfor elem := range set {\n\t\ta = append(a, elem)\n\t}\n\treturn a\n}\n"
  },
  {
    "path": "Active Businesses/q.sql",
    "content": "WITH EventsAVG AS (\n    SELECT\n        event_type,\n        AVG(occurences) AS occurences_avg\n    FROM\n        Events\n    GROUP BY\n        event_type\n)\nSELECT\n    DISTINCT business_id\nFROM\n    EventsAVG AS ea\n        JOIN Events AS e ON e.event_type = ea.event_type\nWHERE\n        occurences > ea.occurences_avg\nGROUP BY\n    business_id\nHAVING\n        COUNT(e.event_type) > 1;\n"
  },
  {
    "path": "Add Binary/kata.go",
    "content": "package kata\n\nfunc addBinary(a string, b string) string {\n\n\tif len(a) == 0 && len(b) == 0 {\n\t\treturn \"0\"\n\t}\n\n\tbb := []byte(b)\n\taa := []byte(a)\n\n\tif len(aa) > len(bb) {\n\t\tfor len(bb) < len(aa) {\n\t\t\tbb = append([]byte{'0'}, bb...)\n\t\t}\n\t} else {\n\t\tfor len(aa) < len(bb) {\n\t\t\taa = append([]byte{'0'}, aa...)\n\t\t}\n\t}\n\n\tcarry := byte(0)\n\tfor i := len(bb) - 1; i >= 0; i-- {\n\t\tif (bb[i] == '0' && aa[i] == '0') && carry == byte(1) {\n\t\t\tbb[i] = '1'\n\t\t\tcarry = byte(0)\n\t\t} else if (bb[i] == '1' && aa[i] == '1') && carry == byte(1) {\n\t\t\tbb[i] = '1'\n\t\t} else if (bb[i] == '1' || aa[i] == '1') && carry == byte(1) {\n\t\t\tbb[i] = '0'\n\t\t} else if bb[i] == '1' && aa[i] == '1' {\n\t\t\tbb[i] = '0'\n\t\t\tcarry = byte(1)\n\t\t} else if (bb[i] == '0' && aa[i] == '1') || (bb[i] == '1' && aa[i] == '0') {\n\t\t\tbb[i] = '1'\n\t\t\tcarry = byte(0)\n\t\t} else if bb[i] == '0' && aa[i] == '0' {\n\t\t\tbb[i] = '0'\n\t\t\tcarry = byte(0)\n\t\t}\n\t}\n\n\tif carry == byte(1) {\n\t\tbb = append([]byte{'1'}, bb...)\n\t}\n\n\treturn string(bb)\n}\n"
  },
  {
    "path": "Add Digits/kata.go",
    "content": "package kata\n\nfunc addDigits(num int) int {\n\tif num == 0 {\n\t\treturn 0\n\t}\n\tvar digitCount int\n\tfor {\n\t\tnum, digitCount = sumFunc(num)\n\t\tif digitCount == 1 {\n\t\t\treturn num\n\t\t}\n\t}\n}\n\nfunc sumFunc(num int) (int, int) {\n\tvar s int\n\tvar c int\n\tfor num > 0 {\n\t\tn := num % 10\n\t\tnum = num / 10\n\t\ts += n\n\t\tc++\n\n\t}\n\treturn s, c\n}\n"
  },
  {
    "path": "Add One Row to Tree/kata.go",
    "content": "package kata\n\ntype TreeNode struct {\n\tVal   int\n\tLeft  *TreeNode\n\tRight *TreeNode\n}\n\nfunc addOneRow(root *TreeNode, v int, d int) *TreeNode {\n\tif d == 1 {\n\t\treturn &TreeNode{Val: v, Left: root}\n\t}\n\tadd(root, 0, v, d-1)\n\treturn root\n}\n\nfunc add(node *TreeNode, count, v, d int) {\n\tcount = count + 1\n\n\tif count == d {\n\t\ttmp := node.Right\n\t\tnode.Right = &TreeNode{Val: v}\n\t\tnode.Right.Right = tmp\n\t\ttmp = node.Left\n\t\tnode.Left = &TreeNode{Val: v}\n\t\tnode.Left.Left = tmp\n\t\treturn\n\t}\n\n\tif node.Right != nil {\n\t\tadd(node.Right, count, v, d)\n\t}\n\n\tif node.Left != nil {\n\t\tadd(node.Left, count, v, d)\n\t}\n}\n"
  },
  {
    "path": "Add Strings/kata.go",
    "content": "package kata\n\nfunc addStrings(num1 string, num2 string) string {\n\tif len(num1) < len(num2) {\n\t\tnum1 = padding(num2, num1)\n\t\treturn sumFunc(num1, num2)\n\t} else if len(num1) > len(num2) {\n\t\tnum2 = padding(num1, num2)\n\t\treturn sumFunc(num1, num2)\n\t}\n\treturn sumFunc(num1, num2)\n}\n\nfunc sumFunc(num1, num2 string) string {\n\tnum3 := []byte(num1)\n\tvar lastReminder byte\n\tfor i := len(num2) - 1; i >= 0; i-- {\n\t\tsum := ((num1[i] - 48) + (num2[i] - 48)) + lastReminder\n\t\tif sum > 9 {\n\t\t\tdiff := sum - byte(9)\n\t\t\tif diff > 1 {\n\t\t\t\tnum3[i] = diff - 1 + 48\n\t\t\t} else {\n\t\t\t\tnum3[i] = 48\n\t\t\t}\n\t\t\tlastReminder = byte(1)\n\t\t} else {\n\t\t\tnum3[i] = sum + 48\n\t\t\tlastReminder = byte(0)\n\t\t}\n\t}\n\tif lastReminder > 0 {\n\t\treturn \"1\" + string(num3)\n\t}\n\n\treturn string(num3)\n}\n\nfunc padding(num2, num1 string) string {\n\tdiff := len(num2) - len(num1)\n\tfor diff > 0 {\n\t\tnum1 = \"0\" + num1\n\t\tdiff--\n\t}\n\treturn num1\n}\n"
  },
  {
    "path": "Add Two Integers/kata.go",
    "content": "package Add_Two_Integers\n\nfunc sum(num1 int, num2 int) int {\n\treturn num1 + num2\n}\n"
  },
  {
    "path": "Adding Spaces to a String/kata.go",
    "content": "package Adding_Spaces_to_a_String\n\nfunc addSpaces(s string, spaces []int) string {\n\tb := make([]byte, len(s)+len(spaces))\n\tvar j int\n\tvar k int\n\tfor i := 0; i < len(s)+len(spaces); i++ {\n\t\tif k < len(spaces) && spaces[k] == j {\n\t\t\tb[i] = ' '\n\t\t\tk++\n\t\t} else {\n\t\t\tb[i] = s[j]\n\t\t\tj++\n\t\t}\n\t}\n\treturn string(b)\n}\n"
  },
  {
    "path": "All Elements in Two Binary Search Trees/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\ntype TreeNode struct {\n\tVal   int\n\tLeft  *TreeNode\n\tRight *TreeNode\n}\n\nfunc getAllElements(root1 *TreeNode, root2 *TreeNode) []int {\n\tlist := make([]int, 0)\n\tinorder(root1, &list)\n\tinorder(root2, &list)\n\tsort.Slice(list, func(i, j int) bool {\n\t\treturn list[i] < list[j]\n\t})\n\treturn list\n}\n\nfunc inorder(node *TreeNode, list *[]int) {\n\tif node == nil {\n\t\treturn\n\t}\n\tif node.Left != nil {\n\t\tinorder(node.Left, list)\n\t}\n\t*list = append(*list, node.Val)\n\tif node.Right != nil {\n\t\tinorder(node.Right, list)\n\t}\n}\n"
  },
  {
    "path": "All the Matches of the League/q.sql",
    "content": "SELECT a.team_name AS home_team,\n       b.team_name AS away_team\nFROM Teams AS a\nINNER JOIN Teams AS b ON b.team_name != a.team_name;"
  },
  {
    "path": "Allow One Function Call/kata.ts",
    "content": "type JSONValue = null | boolean | number | string | JSONValue[] | { [key: string]: JSONValue };\ntype OnceFn = (...args: JSONValue[]) => JSONValue | undefined\n\nfunction once(fn: Function): OnceFn {\n    let called: boolean = false;\n    return function (...args) {\n        if (called == true) {\n            return undefined;\n        }\n        called = true\n        return fn(...args);\n    };\n}\n\n/**\n * let fn = (a,b,c) => (a + b + c)\n * let onceFn = once(fn)\n *\n * onceFn(1,2,3); // 6\n * onceFn(2,3,6); // returns undefined without calling fn\n */"
  },
  {
    "path": "Alternating Digit Sum/kata.java",
    "content": "class Solution {\n    public int alternateDigitSum(int n) {\n        var digitCount = ((int) Math.log10((double) n));\n        var sum = 0;\n        var sign = 1;\n        for (; digitCount >= 0; digitCount--) {\n            var digit = (n/(int) Math.pow(10, (double) digitCount)) % 10;\n            sum += sign * digit;\n            sign = sign * -1;\n        }\n        return sum;\n    }\n}"
  },
  {
    "path": "Ant on the Boundary/kata.go",
    "content": "func returnToBoundaryCount(nums []int) int {\n\tvar prefixSum int\n\tvar count int\n\tfor _, num := range nums {\n\t\tprefixSum += num\n\t\tif prefixSum == 0 {\n\t\t\tcount++\n\t\t}\n\t}\n\treturn count\n}"
  },
  {
    "path": "Apple Redistribution into Boxes/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc minimumBoxes(apple []int, capacity []int) int {\n\tsort.Slice(capacity, func(i, j int) bool {\n\t\treturn capacity[i] > capacity[j]\n\t})\n\n\tvar applesCount int\n\tfor i := range apple {\n\t\tapplesCount += apple[i]\n\t}\n\n\tvar sum, count int\n\tfor i := range capacity {\n\t\tsum += capacity[i]\n\t\tcount++\n\t\tif sum >= applesCount {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn count\n}\n"
  },
  {
    "path": "Apples & Oranges/q.sql",
    "content": "SELECT\n    sale_date,\n    SUM(\n            CASE WHEN fruit = 'apples' THEN sold_num END\n    )\n    - SUM(\n            CASE WHEN fruit = 'oranges' THEN sold_num END\n    ) AS diff\nFROM\n    Sales\nGROUP BY\n    sale_date\nORDER BY\n    sale_date;"
  },
  {
    "path": "Apply Discount Every n Orders/kata.go",
    "content": "package kata\n\ntype Cashier struct {\n\tCustomerCounter int\n\tn               int\n\tdiscount        float64\n\tproducts        map[int]float64\n}\n\nfunc Constructor(n int, discount int, products []int, prices []int) Cashier {\n\tproductsMap := make(map[int]float64, 0)\n\tfor i, p := range products {\n\t\tproductsMap[p] = float64(prices[i])\n\t}\n\treturn Cashier{\n\t\tn:               n,\n\t\tdiscount:        float64(discount),\n\t\tproducts:        productsMap,\n\t\tCustomerCounter: 0,\n\t}\n}\n\nfunc (this *Cashier) GetBill(product []int, amount []int) float64 {\n\n\tif len(product) != len(amount) {\n\t\tpanic(\"product and amount size are unequal\")\n\t}\n\n\tthis.CustomerCounter++\n\tvar totalPrice float64\n\tfor i, p := range product {\n\t\ttotalPrice += float64(this.products[p] * float64(amount[i]))\n\t}\n\n\tif this.CustomerCounter == this.n && this.discount > 0 && this.discount != 100 {\n\t\ttotalPrice = totalPrice - totalPrice*(this.discount/100)\n\t\tthis.CustomerCounter = 0\n\t} else if this.discount == 100 {\n\t\treturn 0\n\t}\n\n\treturn totalPrice\n}\n\n/**\n * Your Cashier object will be instantiated and called as such:\n * obj := Constructor(n, discount, products, prices);\n * param_1 := obj.GetBill(product,amount);\n */\n"
  },
  {
    "path": "Apply Transform Over Each Element in Array/kata.ts",
    "content": "function map(arr: number[], fn: (n: number, i: number) => number): number[] {\n    if (arr.length == 0) {\n        return arr\n    }\n\n    let returnedArray: number[] = new Array(arr.length-1);\n    for(let i: number = 0; i < arr.length; i++) {\n        returnedArray[i] = fn(arr[i], i)\n    }\n    return returnedArray\n};"
  },
  {
    "path": "Armstrong Number/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc isArmstrong(n int) bool {\n\n\tl := n\n\tvar c int\n\tfor l != 0 {\n\t\tl /= 10\n\t\tc++\n\t}\n\n\tvar m int\n\tk := n\n\tfor n != 0 {\n\n\t\tr := n % 10\n\t\tn /= 10\n\n\t\tm += int(math.Pow(float64(r), float64(c)))\n\t\tif m > k {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn m == k\n}\n"
  },
  {
    "path": "Arranging Coins/kata.go",
    "content": "package kata\n\nfunc arrangeCoins(n int) int {\n\tif n == 1 {\n\t\treturn 1\n\t}\n\ti := 1\n\tc := 0\n\tfor n > 0 {\n\t\tn = n - i\n\t\tif n < 0 {\n\t\t\tbreak\n\t\t}\n\t\tc++\n\t\ti++\n\t}\n\treturn c\n}\n"
  },
  {
    "path": "Array Partition I/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc arrayPairSum(a []int) int {\n\tsort.Slice(a, func(i, j int) bool {\n\t\treturn a[i] < a[j]\n\t})\n\tvar sum int\n\tfor i := 0; i < len(a); i = i + 2 {\n\t\tsum += a[i]\n\t}\n\treturn sum\n}\n"
  },
  {
    "path": "Array Reduce Transformation/kata.ts",
    "content": "type Fn = (accum: number, curr: number) => number\n\nfunction reduce(nums: number[], fn: Fn, init: number): number {\n    for(let i: number = 0; i < nums.length; i++) {\n        init = fn(init, nums[i])\n    }\n    return init\n};"
  },
  {
    "path": "Array Wrapper/kata.ts",
    "content": "class ArrayWrapper {\n    \n    nums: number[];\n\n    constructor(nums: number[]) {\n        this.nums = nums;\n    }\n    \n    valueOf(): number {\n        let num: number = 0;\n        this.nums.forEach( n => {\n            num += n;  \n        })\n        return num;\n    }\n    \n    toString(): string {\n        return \"[\" + this.nums.toString() + \"]\";\n    }\n};\n\n/**\n * const obj1 = new ArrayWrapper([1,2]);\n * const obj2 = new ArrayWrapper([3,4]);\n * obj1 + obj2; // 10\n * String(obj1); // \"[1,2]\"\n * String(obj2); // \"[3,4]\"\n */"
  },
  {
    "path": "Article Views I/q.sql",
    "content": "SELECT DISTINCT author_id AS id FROM Views WHERE author_id = viewer_id ORDER BY author_id;"
  },
  {
    "path": "Assign Cookies/kata.go",
    "content": "package Assign_Cookies\n\nimport \"sort\"\n\nfunc findContentChildren(g []int, s []int) int {\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\n\tsort.Slice(g, func(i, j int) bool {\n\t\treturn g[i] > g[j]\n\t})\n\n\tsort.Slice(s, func(i, j int) bool {\n\t\treturn s[i] > s[j]\n\t})\n\n\tvar j int\n\tvar c int\n\tfor i := 0; i < len(g); {\n\n\t\tif s[j] >= g[i] {\n\t\t\tc++\n\t\t\ti++\n\t\t\tj++\n\t\t\tif j == len(s) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\ti++\n\t\t}\n\t}\n\treturn c\n}\n"
  },
  {
    "path": "Average Salary Excluding the Minimum and Maximum Salary/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc average(salary []int) float64 {\n\tsort.Ints(salary)\n\tsalary = salary[1 : len(salary)-1]\n\tvar average int\n\tfor _, n := range salary {\n\t\taverage = average + n\n\t}\n\treturn float64(average) / float64(len(salary))\n}\n"
  },
  {
    "path": "Average Selling Price/q.sql",
    "content": "SELECT p.product_id,\n       ROUND(Sum(p.price * us.units) / Sum(us.units), 2) AS average_price\nFROM   unitssold AS us\n           INNER JOIN prices AS p\n                      ON p.product_id = us.product_id\nWHERE  us.purchase_date >= p.start_date\n  AND us.purchase_date <= p.end_date\nGROUP  BY us.product_id "
  },
  {
    "path": "Average Time of Process per Machine/q.sql",
    "content": "SELECT\n  machine_id,\n  ROUND(\n    (\n      SUM(\n        CASE WHEN activity_type = \"end\" THEN timestamp ELSE 0 END\n      ) - SUM(\n        CASE WHEN activity_type = \"start\" THEN timestamp ELSE 0 END\n      )\n    ) /(COUNT(*) / 2),\n    3\n  ) as processing_time\nFROM\n  Activity\nGROUP BY\n  machine_id\n"
  },
  {
    "path": "Average Value of Even Numbers That Are Divisible by Three/kata.java",
    "content": "class Solution {\n    public int averageValue(int[] nums) {\n        var sum = 0;\n        var count = 0;\n\n        for (var i = 0; i < nums.length; i++) {\n             if (nums[i] % 2 == 0 && nums[i] % 3 == 0) {\n                 sum += nums[i];\n                 count++;\n             }\n        }\n\n        if (sum == 0) {\n            return 0;\n        }\n\n        return (int) Math.floor(sum / count);\n    }\n}"
  },
  {
    "path": "Average of Levels in Binary Tree/kata.go",
    "content": "package kata\n\nimport \"container/list\"\n\ntype TreeNode struct {\n\tVal   int\n\tLeft  *TreeNode\n\tRight *TreeNode\n}\n\nfunc averageOfLevels(node *TreeNode) []float64 {\n\tif node == nil {\n\t\treturn nil\n\t}\n\tqueue := list.New()\n\ttype TreeNodeWrapper struct {\n\t\tn *TreeNode\n\t\tl int\n\t}\n\tqueue.PushBack(&TreeNodeWrapper{n: node, l: 1})\n\tvals := make([]float64, 0)\n\tvar sum float64\n\tlastLevel := 1\n\tvar count float64\n\tfor queue.Len() > 0 {\n\t\te := queue.Front()\n\t\tw := e.Value.(*TreeNodeWrapper)\n\t\tif w.n.Left != nil {\n\t\t\tqueue.PushBack(&TreeNodeWrapper{n: w.n.Left, l: w.l + 1})\n\t\t}\n\t\tif w.n.Right != nil {\n\t\t\tqueue.PushBack(&TreeNodeWrapper{n: w.n.Right, l: w.l + 1})\n\t\t}\n\t\tif w.l != lastLevel {\n\t\t\tvals = append(vals, sum/count)\n\t\t\tsum = 0\n\t\t\tcount = 0\n\t\t\tlastLevel = w.l\n\t\t}\n\t\tcount = count + 1\n\t\tsum = sum + float64(w.n.Val)\n\t\tqueue.Remove(e)\n\t\tif queue.Len() == 0 {\n\t\t\tvals = append(vals, sum/count)\n\t\t}\n\t}\n\treturn vals\n}\n"
  },
  {
    "path": "Backspace String Compare/kata.go",
    "content": "package kata\n\nfunc backspaceCompare(S string, T string) bool {\n\treturn mod(S) == mod(T)\n}\n\nfunc mod(S string) string {\n\tmodifiedS := make([]byte, 0)\n\tvar j int\n\tfor i := 0; i < len(S); i++ {\n\t\tif S[i] == '#' {\n\t\t\tif j-1 >= 0 {\n\t\t\t\tmodifiedS = modifiedS[:j-1]\n\t\t\t\tj = j - 1\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tj++\n\t\tmodifiedS = append(modifiedS, S[i])\n\t}\n\n\treturn string(modifiedS)\n}\n"
  },
  {
    "path": "Bank Account Summary/q.sql",
    "content": "SELECT\n    Ux.user_id,\n    Ux.user_name,\n    (credit + SUM(COALESCE(Tx.amount, 0))) AS credit,\n    (\n        CASE WHEN (credit + SUM(COALESCE(Tx.amount, 0))) < 0 THEN 'Yes' ELSE 'No' END\n        ) AS credit_limit_breached\nFROM\n    Users AS Ux\n        INNER JOIN (\n        (\n            SELECT\n                user_id,\n                - amount AS amount\n            FROM\n                Users AS u\n                    LEFT JOIN Transactions AS t ON u.user_id = t.paid_by\n        )\n        UNION ALL\n        (\n            SELECT\n                user_id,\n                amount AS amount\n            FROM\n                Users AS u\n                    LEFT JOIN Transactions AS t ON u.user_id = t.paid_to\n        )\n    ) AS Tx ON Tx.user_id = Ux.user_id\nGROUP By\n    Ux.user_id;"
  },
  {
    "path": "Bank Account Summary II/q.sql",
    "content": "SELECT u.name, SUM(amount) AS balance FROM Users AS u INNER JOIN Transactions AS t ON t.account = u.account GROUP BY u.name HAVING balance > 10000 ;"
  },
  {
    "path": "Base 7/kata.go",
    "content": "package kata\n\nfunc convertToBase7(num int) string {\n\n\tif num == 0 {\n\t\treturn \"0\"\n\t}\n\n\tvar neg bool\n\tif num < 0 {\n\t\tnum = num * -1\n\t\tneg = true\n\t}\n\n\tconvertedNum := make([]byte, 0)\n\tfor num > 0 {\n\t\trem := num % 7\n\t\tnum = num / 7\n\t\trem = rem + 48\n\t\tconvertedNum = append(convertedNum, byte(rem))\n\t}\n\n\tfor i, j := 0, len(convertedNum)-1; i < j; i, j = i+1, j-1 {\n\t\tconvertedNum[i], convertedNum[j] = convertedNum[j], convertedNum[i]\n\t}\n\n\tif neg {\n\t\treturn \"-\" + string(convertedNum)\n\t}\n\n\treturn string(convertedNum)\n}\n"
  },
  {
    "path": "Baseball Game/kata.go",
    "content": "package kata\n\nimport \"strconv\"\n\nfunc calPoints(ops []string) int {\n\thistory := make([]int, 0)\n\tfor _, op := range ops {\n\n\t\tif op == \"C\" {\n\t\t\thistory = history[:len(history)-1]\n\t\t\tcontinue\n\t\t} else if op == \"D\" {\n\t\t\tn := history[len(history)-1] * 2\n\t\t\thistory = append(history, n)\n\t\t\tcontinue\n\t\t} else if op == \"+\" {\n\t\t\tn := history[len(history)-1] + history[len(history)-2]\n\t\t\thistory = append(history, n)\n\t\t\tcontinue\n\t\t}\n\n\t\tn, _ := strconv.Atoi(op)\n\t\thistory = append(history, n)\n\t}\n\n\tvar sum int\n\tfor _, n := range history {\n\t\tsum = sum + n\n\t}\n\n\treturn sum\n}\n"
  },
  {
    "path": "Basic Calculator II/kata.go",
    "content": "package kata\n\nimport (\n\t\"container/list\"\n)\n\nfunc calculate(s string) int {\n\tnodes := Parse([]byte(s))\n\treturn Eval(nodes)\n}\n\nconst (\n\tNumberKind = iota\n\tPlusKind\n\tMinusKind\n\tMultiplyKind\n\tDvisionKind\n)\n\ntype Node struct {\n\tIdentifier byte\n\tKind       int\n\tValue      int\n\tPriority   int\n}\n\nconst (\n\tMultiply byte = 42\n\tDvision  byte = 47\n\tPlus     byte = 43\n\tMinus    byte = 45\n)\n\nfunc Parse(expression []byte) *list.List {\n\n\tnodes := list.New()\n\tfor i := len(expression) - 1; i >= 0; i-- {\n\t\tif expression[i] == Minus {\n\t\t\tnodes.PushBack(Node{Kind: MinusKind})\n\t\t} else if expression[i] == Multiply {\n\t\t\tnodes.PushBack(Node{Kind: MultiplyKind, Priority: 1})\n\t\t} else if expression[i] == Plus {\n\t\t\tnodes.PushBack(Node{Kind: PlusKind})\n\t\t} else if expression[i] == Dvision {\n\t\t\tnodes.PushBack(Node{Kind: DvisionKind, Priority: 1})\n\t\t} else if expression[i] >= 48 && expression[i] <= 57 {\n\t\t\tn := Node{Kind: NumberKind}\n\t\t\tvar sum int\n\t\t\tsum = int(expression[i]) - 48\n\t\t\ti--\n\t\t\tnorm := 10\n\t\t\tfor i >= 0 {\n\t\t\t\tif expression[i] >= 48 && expression[i] <= 57 {\n\t\t\t\t\tsum += (int(expression[i]) - 48) * norm\n\t\t\t\t\ti--\n\t\t\t\t\tnorm = norm * 10\n\t\t\t\t} else {\n\t\t\t\t\ti++\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tn.Value = sum\n\t\t\tnodes.PushBack(n)\n\t\t}\n\t}\n\n\treturn nodes\n}\n\nfunc Eval(nodes *list.List) int {\n\tif nodes.Len() == 0 {\n\t\treturn 0\n\t}\n\n\tfor e := nodes.Back(); e != nil; e = e.Prev() {\n\t\tnode := e.Value.(Node)\n\t\tif node.Priority == 1 {\n\t\t\tif node.Kind == MultiplyKind {\n\t\t\t\teA := e.Prev()\n\t\t\t\tnodeA := eA.Value.(Node)\n\t\t\t\teb := e.Next()\n\t\t\t\tnodeB := eb.Value.(Node)\n\t\t\t\tsum := nodeA.Value * nodeB.Value\n\n\t\t\t\tnodes.Remove(eb)\n\t\t\t\tnodes.Remove(eA)\n\t\t\t\tnewNode := nodes.InsertBefore(Node{Kind: NumberKind, Value: sum}, e)\n\t\t\t\tnodes.Remove(e)\n\t\t\t\te = newNode\n\t\t\t}\n\t\t\tif node.Kind == DvisionKind {\n\t\t\t\teA := e.Prev()\n\t\t\t\tnodeA := eA.Value.(Node)\n\t\t\t\teb := e.Next()\n\t\t\t\tnodeB := eb.Value.(Node)\n\t\t\t\tsum := nodeB.Value / nodeA.Value\n\n\t\t\t\tnodes.Remove(eb)\n\t\t\t\tnodes.Remove(eA)\n\t\t\t\tnewNode := nodes.InsertBefore(Node{Kind: NumberKind, Value: sum}, e)\n\t\t\t\tnodes.Remove(e)\n\t\t\t\te = newNode\n\t\t\t}\n\t\t}\n\t}\n\n\tvalue := nodes.Back()\n\tsum := value.Value.(Node).Value\n\tvalue = value.Prev()\n\tfor e := value; e != nil; e = e.Prev() {\n\t\tnode := e.Value.(Node)\n\t\tif node.Kind == PlusKind {\n\t\t\te = e.Prev()\n\t\t\tnode = e.Value.(Node)\n\t\t\tsum += node.Value\n\n\t\t} else if node.Kind == MinusKind {\n\t\t\te = e.Prev()\n\t\t\tnode = e.Value.(Node)\n\t\t\tsum -= node.Value\n\t\t}\n\t}\n\treturn sum\n}\n"
  },
  {
    "path": "Best Poker Hand/kata.go",
    "content": "package kata\n\nfunc bestHand(ranks []int, suits []byte) string {\n\n\tc := make([]int, 13+4)\n\tfor i, suit := range suits {\n\t\tc[ranks[i]-1]++\n\t\tc[suit-97+13]++\n\t}\n\n\ti := len(c) - 1\n\tfor ; i >= 13; i-- {\n\t\tif c[i] == 5 {\n\t\t\treturn \"Flush\"\n\t\t}\n\t}\n\n\tvar max int\n\tfor ; i >= 0; i-- {\n\t\tif c[i] > max {\n\t\t\tmax = c[i]\n\t\t}\n\t}\n\n\tif max >= 3 {\n\t\treturn \"Three of a Kind\"\n\t} else if max == 2 {\n\t\treturn \"Pair\"\n\t}\n\n\treturn \"High Card\"\n}\n"
  },
  {
    "path": "Best Time to Buy and Sell Stock/kata.go",
    "content": "package kata\n\nfunc maxProfit(prices []int) int {\n\tmin := -1\n\tvar maxProfit int\n\tfor i := 0; i < len(prices); i++ {\n\t\tif min == -1 || min > prices[i] {\n\t\t\tmin = prices[i]\n\t\t} else if prices[i]-min > maxProfit {\n\t\t\tmaxProfit = prices[i] - min\n\t\t}\n\t}\n\treturn maxProfit\n}\n"
  },
  {
    "path": "Big Countries/kata.sql",
    "content": "package kata\n\nSELECT name,population,area FROM World WHERE area > 3000000 OR population > 25000000;\n\n"
  },
  {
    "path": "Biggest Single Number/q.sql",
    "content": "(SELECT num\n FROM mynumbers GROUP  BY num\n HAVING Count(num) = 1\n ORDER  BY num DESC\n     LIMIT 1)\nUNION\n(SELECT NULL)\nLIMIT 1"
  },
  {
    "path": "Binary Gap/kata.go",
    "content": "package kata\n\nfunc binaryGap(n int) int {\n\tvar globalMax int\n\tvar max int\n\tfor n != 0 {\n\t\tr := n % 2\n\t\tn = n / 2\n\t\tif r == 0 && max == 0 {\n\t\t\tcontinue\n\t\t} else if r == 1 && max == 0 {\n\t\t\tmax++\n\t\t} else if r == 1 && max != 0 {\n\t\t\tif max > globalMax {\n\t\t\t\tglobalMax = max\n\t\t\t}\n\t\t\tmax = 1\n\t\t} else {\n\t\t\tmax++\n\t\t}\n\t}\n\n\treturn globalMax\n}\n"
  },
  {
    "path": "Binary Number with Alternating Bits/kata.go",
    "content": "package kata\n\nfunc hasAlternatingBits(n int) bool {\n\tlastBit := n % 2\n\tn = n >> 1\n\tfor n > 0 {\n\t\tb := n % 2\n\t\tn = n >> 1\n\t\tif lastBit == b {\n\t\t\treturn false\n\t\t}\n\t\tlastBit = b\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "Binary Prefix Divisible By 5/kata.py",
    "content": "class Solution(object):\n    def prefixesDivBy5(self, nums):\n        \"\"\"\n        :type nums: List[int]\n        :rtype: List[bool]\n        \"\"\"\n        result = [False] * len(nums)  \n        tracker = 1  \n        i = 0\n        for i, num in enumerate(nums):\n            if num != 0:  \n                break\n            else:\n                result[i] = True  \n\n        i += 1  \n        for num in nums[i:]:\n            if num == 0:\n                tracker = tracker << 1  \n                if tracker % 5 == 0:\n                    result[i] = True\n            else:\n                tracker = tracker << 1  \n                tracker = tracker | 1  \n                if tracker % 5 == 0:\n                    result[i] = True\n            i += 1\n\n        return result\n        "
  },
  {
    "path": "Binary Search Tree Iterator/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\ntype TreeNode struct {\n\tVal   int\n\tLeft  *TreeNode\n\tRight *TreeNode\n}\n\ntype BSTIterator struct {\n\tstack []int\n}\n\nfunc Constructor(root *TreeNode) BSTIterator {\n\tstack := make([]int, 0)\n\tpopulateStack(root, &stack)\n\tsort.Slice(stack, func(i, j int) bool {\n\t\treturn stack[i] < stack[j]\n\t})\n\treturn BSTIterator{\n\t\tstack: stack,\n\t}\n}\n\nfunc populateStack(node *TreeNode, stack *[]int) {\n\tif node == nil {\n\t\treturn\n\t}\n\n\t*stack = append(*stack, node.Val)\n\n\tif node.Left != nil {\n\t\tpopulateStack(node.Left, stack)\n\t}\n\tif node.Right != nil {\n\t\tpopulateStack(node.Right, stack)\n\t}\n}\n\n/** @return the next smallest number */\nfunc (this *BSTIterator) Next() int {\n\tv := this.stack[0]\n\tthis.stack = this.stack[1:]\n\treturn v\n}\n\n/** @return whether we have a next smallest number */\nfunc (this *BSTIterator) HasNext() bool {\n\tif len(this.stack) == 0 {\n\t\treturn false\n\t}\n\treturn true\n}\n\n/**\n * Your BSTIterator object will be instantiated and called as such:\n * obj := Constructor(root);\n * param_1 := obj.Next();\n * param_2 := obj.HasNext();\n */\n"
  },
  {
    "path": "Binary Tree Inorder Traversal/kata.go",
    "content": "package kata\n\ntype TreeNode struct {\n\tVal   int\n\tLeft  *TreeNode\n\tRight *TreeNode\n}\n\nfunc inorderTraversal(root *TreeNode) []int {\n\tlist := make([]int, 0)\n\ttraversal(root, &list)\n\treturn list\n}\n\nfunc traversal(node *TreeNode, list *[]int) {\n\tif node == nil {\n\t\treturn\n\t}\n\tif node.Left != nil {\n\t\ttraversal(node.Left, list)\n\t}\n\t*list = append(*list, node.Val)\n\tif node.Right != nil {\n\t\ttraversal(node.Right, list)\n\t}\n}\n"
  },
  {
    "path": "Binary Tree Paths/kata.go",
    "content": "package kata\n\nimport \"strconv\"\n\ntype TreeNode struct {\n\tVal   int\n\tLeft  *TreeNode\n\tRight *TreeNode\n}\n\nfunc binaryTreePaths(root *TreeNode) []string {\n\tif root == nil {\n\t\treturn []string{}\n\t}\n\tpaths := make([]string, 0)\n\tallPaths(root, strconv.Itoa(root.Val)+\"->\", &paths)\n\treturn paths\n}\n\nfunc allPaths(node *TreeNode, s string, all *[]string) {\n\tif node.Left == nil && node.Right == nil {\n\t\t*all = append(*all, s[:len(s)-2])\n\t\treturn\n\t}\n\tif node.Left != nil {\n\t\tallPaths(node.Left, s+strconv.Itoa(node.Left.Val)+\"->\", all)\n\t}\n\tif node.Right != nil {\n\t\tallPaths(node.Right, s+strconv.Itoa(node.Right.Val)+\"->\", all)\n\t}\n}\n"
  },
  {
    "path": "Binary Tree Postorder Traversal/kata.go",
    "content": "package kata\n\ntype TreeNode struct {\n\tVal   int\n\tLeft  *TreeNode\n\tRight *TreeNode\n}\n\nfunc postorderTraversal(root *TreeNode) []int {\n\tlist := make([]int, 0)\n\ttraversal(root, &list)\n\treturn list\n}\n\nfunc traversal(node *TreeNode, list *[]int) {\n\tif node == nil {\n\t\treturn\n\t}\n\tif node.Left != nil {\n\t\ttraversal(node.Left, list)\n\t}\n\tif node.Right != nil {\n\t\ttraversal(node.Right, list)\n\t}\n\t*list = append(*list, node.Val)\n}\n"
  },
  {
    "path": "Binary Tree Preorder Traversal/kata.go",
    "content": "package kata\n\ntype TreeNode struct {\n\tVal   int\n\tLeft  *TreeNode\n\tRight *TreeNode\n}\n\nfunc preorderTraversal(root *TreeNode) []int {\n\tlist := make([]int, 0)\n\ttraversal(root, &list)\n\treturn list\n}\n\nfunc traversal(node *TreeNode, list *[]int) {\n\tif node == nil {\n\t\treturn\n\t}\n\t*list = append(*list, node.Val)\n\tif node.Left != nil {\n\t\ttraversal(node.Left, list)\n\t}\n\tif node.Right != nil {\n\t\ttraversal(node.Right, list)\n\t}\n}\n"
  },
  {
    "path": "Build Array from Permutation/kata.go",
    "content": "package kata\n\nfunc buildArray(nums []int) []int {\n\n\tpermNums := make([]int, len(nums))\n\tfor i := 0; i < len(nums); i++ {\n\t\tpermNums[i] = nums[nums[i]]\n\t}\n\n\treturn permNums\n}\n"
  },
  {
    "path": "Buildings With an Ocean View/kata.java",
    "content": "class Solution {\n    public int[] findBuildings(int[] heights) {\n        var n = heights.length;\n        Stack<Integer> buildings = new Stack<>();\n        for (int i = 0; i < n; i++) {\n            while (!buildings.empty() && heights[buildings.peek()] <= heights[i]) {\n                buildings.pop();\n            }\n            buildings.push(i);\n        }\n        var result = new int[buildings.size()];\n        var i = buildings.size()-1;\n        while (!buildings.isEmpty()) {\n            result[i] = buildings.pop();\n            i--;\n        }\n        return result;\n    }\n}"
  },
  {
    "path": "Bulls and Cows/kata.go",
    "content": "package kata\n\nimport \"strconv\"\n\nfunc getHint(secret string, guess string) string {\n\tvar bulls int\n\tvar cows int\n\n\tchars := make(map[int]int)\n\tidxs := make(map[int]bool)\n\tfor i, char := range secret {\n\t\tchars[i] = int(char)\n\t\tcharNorm := int(char) * -1\n\t\tchars[charNorm] = chars[charNorm] + 1\n\t}\n\n\tfor i, char := range guess {\n\t\tv, ok := chars[i]\n\t\tif ok && v == int(char) {\n\t\t\tcharNorm := int(char) * -1\n\t\t\tchars[charNorm] = chars[charNorm] - 1\n\t\t\tif chars[charNorm] == 0 {\n\t\t\t\tdelete(chars, charNorm)\n\t\t\t}\n\t\t\tidxs[i] = true\n\t\t\tbulls++\n\t\t\tcontinue\n\t\t}\n\t}\n\n\tfor i, char := range guess {\n\t\tif idxs[i] {\n\t\t\tcontinue\n\t\t}\n\t\tcharNorm := int(char) * -1\n\t\tv := chars[charNorm]\n\t\tif v > 0 {\n\t\t\tchars[charNorm] = chars[charNorm] - 1\n\t\t\tcows++\n\t\t}\n\t}\n\n\treturn strconv.Itoa(bulls) + \"A\" + strconv.Itoa(cows) + \"B\"\n}\n"
  },
  {
    "path": "Calculate Amount Paid in Taxes/kata.go",
    "content": "package Calculate_Amount_Paid_in_Taxes\n\nfunc calculateTax(brackets [][]int, income int) float64 {\n\n\tif income == 0 {\n\t\treturn 0\n\t}\n\n\tk := 0\n\tamount := 0.0\n\tfor _, bracket := range brackets {\n\n\t\tif income >= bracket[0] {\n\t\t\tif k == 0 {\n\t\t\t\tk += bracket[0]\n\t\t\t\tamount += float64(bracket[0]) * float64(bracket[1]) / 100\n\t\t\t} else {\n\t\t\t\tamount += (float64(bracket[0]) - float64(k)) * float64(bracket[1]) / 100\n\t\t\t\tk += bracket[0] - k\n\t\t\t}\n\t\t} else if income < bracket[0] {\n\t\t\tamount += float64(income-k) * float64(bracket[1]) / 100\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn amount\n}\n"
  },
  {
    "path": "Calculate Money in Leetcode Bank/kata.go",
    "content": "package kata\n\nfunc totalMoney(n int) int {\n\tcount := 0\n\tdays := 0\n\tbouns := 0\n\tmoney := 1\n\tfor i := 0; i < n; i++ {\n\t\tcount += (money + bouns)\n\t\tdays++\n\t\tmoney++\n\t\tif days == 7 {\n\t\t\tbouns++\n\t\t\tdays = 0\n\t\t\tmoney = 1\n\t\t}\n\t}\n\treturn count\n}\n"
  },
  {
    "path": "Calculate Salaries/q.sql",
    "content": "select\n    company_id,\n    employee_id,\n    employee_name,\n    (CASE\n         WHEN (MAX(salary) OVER(PARTITION BY company_id) >= 1000 AND MAX(salary) OVER(PARTITION BY company_id) <= 10000) THEN ROUND((salary-(salary*0.24)), 0)\n         WHEN (MAX(salary) OVER(PARTITION BY company_id) < 1000) THEN ROUND(salary,0)\n         WHEN (MAX(salary) OVER(PARTITION BY company_id) > 10000) THEN ROUND((salary-(salary*0.49)),0)\n        END) AS salary\nfrom Salaries;"
  },
  {
    "path": "Calculate Special Bonus/q.sql",
    "content": "SELECT employee_id,\n    CASE\n        WHEN employee_id % 2 = 1 AND LEFT(name, 1) != 'M' THEN salary\n    ELSE 0\nEND AS bonus\nFROM Employees;"
  },
  {
    "path": "Calculate the Influence of Each Salesperson/q.sql",
    "content": "SELECT salesperson_id,\n       name,\n       IFNULL(SUM(price), 0) AS total\nFROM Salesperson AS s\n         LEFT JOIN Customer USING(salesperson_id)\n         LEFT JOIN Sales USING(customer_id)\nGROUP BY s.salesperson_id;"
  },
  {
    "path": "Calculator with Method Chaining/kata.js",
    "content": "class Calculator {\n    \n    /** \n     * @param {number} value\n     */\n    constructor(value) {\n        this.currentValue = value\n        this.error = null\n    }\n    \n    /** \n     * @param {number} value\n     * @return {Calculator}\n     */\n    add(value){\n        this.currentValue += value\n        return this  \n    }\n    \n    /** \n     * @param {number} value\n     * @return {Calculator}\n     */\n    subtract(value){\n        this.currentValue -= value\n        return this\n    }\n    \n    /** \n     * @param {number} value\n     * @return {Calculator}\n     */  \n    multiply(value) {\n         this.currentValue *= value\n         return this\n    }\n    \n    /** \n     * @param {number} value\n     * @return {Calculator}\n     */\n    divide(value) {\n        if (value == 0) {\n            this.error = \"Division by zero is not allowed\"\n            return this\n        }\n\n        this.currentValue /= value\n        return this\n    }\n    \n    /** \n     * @param {number} value\n     * @return {Calculator}\n     */\n    power(value) {\n        this.currentValue = Math.pow(this.currentValue, value);\n        return this\n    }\n    \n    /** \n     * @return {number}\n     */\n    getResult() {\n        if (this.error != null) {\n            return this.error\n        }    \n\n        return this.currentValue\n    }\n}"
  },
  {
    "path": "Can Make Arithmetic Progression From Sequence/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc canMakeArithmeticProgression(arr []int) bool {\n\tif len(arr) == 2 {\n\t\treturn true\n\t}\n\n\tsort.Ints(arr)\n\tglobalDiff := arr[1] - arr[0]\n\tfor i := 2; i < len(arr); i++ {\n\t\tdiff := arr[i] - arr[i-1]\n\t\tif globalDiff != diff {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "Can Place Flowers/kata.go",
    "content": "package kata\n\nfunc canPlaceFlowers(flowerbed []int, n int) bool {\n\n\tfor i := 0; i < len(flowerbed); i++ {\n\t\tif flowerbed[i] == 0 {\n\t\t\tif i-1 >= 0 && flowerbed[i-1] != 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif i+1 < len(flowerbed) && flowerbed[i+1] != 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tflowerbed[i] = 1\n\t\t\tn = n - 1\n\t\t}\n\t}\n\treturn n <= 0\n}\n"
  },
  {
    "path": "Capital Gain-loss/q.sql",
    "content": "SELECT\n    s.stock_name,\n    SUM(CASE WHEN s.operation=\"Buy\" THEN -s.price ELSE s.price END) AS capital_gain_loss\nFROM Stocks AS s\nGROUP BY s.stock_name;"
  },
  {
    "path": "Capitalize the Title/kata.go",
    "content": "package Capitalize_the_Title\n\nfunc capitalizeTitle(title string) string {\n\n\tb := make([]byte, len(title))\n\tvar c int\n\tvar j int\n\tfor i := 0; i < len(title); i++ {\n\n\t\tif 'A' <= title[i] && title[i] <= 'Z' {\n\t\t\tb[i] = title[i] + 32\n\t\t} else {\n\t\t\tb[i] = title[i]\n\t\t}\n\n\t\tif title[i] == ' ' || len(title)-1 == i {\n\t\t\tif len(title)-1 == i {\n\t\t\t\tc++\n\t\t\t}\n\n\t\t\tif c > 2 && 'a' <= title[j] && title[j] <= 'z' {\n\t\t\t\tb[j] = title[j] - 32\n\t\t\t} else if c > 2 {\n\t\t\t\tb[j] = title[j]\n\t\t\t}\n\t\t\tc = 0\n\t\t\tj = i + 1\n\t\t} else {\n\t\t\tc++\n\t\t}\n\t}\n\n\treturn string(b)\n}\n"
  },
  {
    "path": "Categorize Box According to Criteria/kata.java",
    "content": "class Solution {\n    public String categorizeBox(int length, int width, int height, int mass) {\n        var bulky = false;\n        var heavy = false;\n\n        // If the mass of the box is greater or equal to 100, it is \"Heavy\".\n        if (mass >= 100) {\n            heavy = true;\n        }\n\n        // The box is \"Bulky\" if any of the dimensions of the box is greater or equal to.\n        var dimensionThreshold = (long) Math.pow(10.0, 4.0);\n        if (length >= dimensionThreshold || width >= dimensionThreshold || height >= dimensionThreshold) {\n            bulky = true;\n        }\n\n        //  The box is \"Bulky\" if the volume of the box is greater or equal to\n        if (((long)length * (long) width * (long) height) >= (long) Math.pow(10.0, 9)) {\n            bulky = true;\n        }\n\n        // If the box is both \"Bulky\" and \"Heavy\", then its category is \"Both\"\n        if (bulky && heavy) {\n            return \"Both\";\n        // If the box is neither \"Bulky\" nor \"Heavy\", then its category is \"Neither\"\n        }else if (!bulky && !heavy) {\n            return \"Neither\";\n        // If the box is \"Bulky\" but not \"Heavy\", then its category is \"Bulky\n        } else if (bulky && !heavy) {\n            return \"Bulky\";\n        }\n\n        // If the box is \"Heavy\" but not \"Bulky\", then its category is \"Heavy\".\n        return \"Heavy\";\n    }\n}"
  },
  {
    "path": "Cells with Odd Values in a Matrix/kata.go",
    "content": "package kata\n\nfunc oddCells(n int, m int, indices [][]int) int {\n\tif n == 0 {\n\t\treturn 0\n\t}\n\tmatrix := make([][]int, n)\n\tfor i := 0; i < n; i++ {\n\t\tmatrix[i] = make([]int, m)\n\t}\n\n\tfor _, idx := range indices {\n\t\tn := idx[0]\n\t\tm := idx[1]\n\t\tfor j := 0; j < len(matrix[n]); j++ {\n\t\t\tmatrix[n][j]++\n\t\t}\n\t\tfor i := 0; i < len(matrix); i++ {\n\t\t\tmatrix[i][m]++\n\t\t}\n\t}\n\n\tvar c int\n\tfor i := 0; i < n; i++ {\n\t\tfor j := 0; j < len(matrix[i]); j++ {\n\t\t\tif matrix[i][j]%2 == 1 {\n\t\t\t\tc++\n\t\t\t}\n\t\t}\n\t}\n\treturn c\n}\n"
  },
  {
    "path": "Change Data Type/kata.py",
    "content": "import pandas as pd\n\ndef changeDatatype(students: pd.DataFrame) -> pd.DataFrame:\n    students['grade'] = students['grade'].astype(int)\n    return students"
  },
  {
    "path": "Check Distances Between Same Letters/kata.java",
    "content": "class Solution {\n    public boolean checkDistances(String s, int[] distance) {\n        for (var i = 0; i < s.length(); i++) {\n            var distanceOfChar = distance[s.charAt(i)- 97];\n            var rightPosNewChar = distanceOfChar + i + 1;\n            var leftPosNewChar =  i - distanceOfChar - 1;\n            var left = true;\n            var right = true;\n            if (rightPosNewChar < s.length()) {\n                if (s.charAt(i) == s.charAt(rightPosNewChar)) {\n                    right = false;\n                }\n            }\n            if (leftPosNewChar >=  0) {\n                if (s.charAt(i) == s.charAt(leftPosNewChar)) {\n                    left = false;\n                }\n            }\n            if (left && right) {\n                return false;\n            }\n        }\n        return true;\n    }\n}"
  },
  {
    "path": "Check If All 1's Are at Least Length K Places Away/kata.go",
    "content": "package kata\n\nfunc kLengthApart(nums []int, k int) bool {\n\tvar currentK *int\n\tfor i := 0; i < len(nums); i++ {\n\t\tif nums[i] == 1 {\n\t\t\tif currentK == nil {\n\t\t\t\tcurrentK = new(int)\n\t\t\t} else {\n\t\t\t\tif *currentK < k {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t*currentK = 0\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif currentK != nil {\n\t\t\t*currentK++\n\t\t}\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "Check If N and Its Double Exist/kata.go",
    "content": "package kata\n\nfunc checkIfExist(arr []int) bool {\n\n\tdoubles := make(map[int]int)\n\tfor i := 0; i < len(arr); i++ {\n\t\tdoubles[arr[i]*2] = i\n\t}\n\n\tfor i, n := range arr {\n\t\tif doubles[n] == i {\n\t\t\tcontinue\n\t\t}\n\t\tif _, ok := doubles[n]; ok {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "Check If Two String Arrays are Equivalent/kata.go",
    "content": "package kata\n\nfunc arrayStringsAreEqual(word1 []string, word2 []string) bool {\n\n\tvar i int\n\tvar j int\n\tvar a int\n\tvar b int\n\tfor a < len(word1) && b < len(word2) {\n\n\t\tif word1[a][i] != word2[b][j] {\n\t\t\treturn false\n\t\t}\n\n\t\tif a < len(word1) && len(word1[a])-1 == i {\n\t\t\ti = 0\n\t\t\ta++\n\t\t\tif b < len(word2) && len(word2[b])-1 == j {\n\t\t\t\tj = 0\n\t\t\t\tb++\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tj++\n\t\t\tcontinue\n\t\t}\n\n\t\tif b < len(word2) && len(word2[b])-1 == j {\n\t\t\tj = 0\n\t\t\tb++\n\n\t\t\tif a < len(word1) && len(word1[a])-1 == i {\n\t\t\t\ti = 0\n\t\t\t\ta++\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\ti++\n\t\t\tcontinue\n\t\t}\n\n\t\ti++\n\t\tj++\n\t}\n\n\tif i != 0 || j != 0 {\n\t\treturn false\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "Check If a Number Is Majority Element in a Sorted Array/kata.java",
    "content": "class Solution {\n    public boolean isMajorityElement(int[] nums, int target) {\n         var count = 0;\n         for (var num: nums) {\n              if (num == target) {\n                  count++;\n              }\n         }\n         return count > nums.length/2;\n    }\n}"
  },
  {
    "path": "Check If a Word Occurs As a Prefix of Any Word in a Sentence/kata.go",
    "content": "package kata\n\nfunc isPrefixOfWord(sentence string, searchWord string) int {\n\tvar wordCounter int\n\tvar matched bool\n\tvar j int\n\tfor i := 0; i < len(sentence); i++ {\n\t\tif sentence[i] == ' ' || i == len(sentence)-1 {\n\t\t\tif i == len(sentence)-1 {\n\t\t\t\ti = i + 1\n\t\t\t}\n\t\t\twordCounter++\n\t\t\tif len(sentence[j:i]) >= len(searchWord) {\n\t\t\t\tif sentence[j:j+len(searchWord)] == searchWord {\n\t\t\t\t\tmatched = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tj = i + 1\n\t\t}\n\n\t}\n\n\tif !matched {\n\t\treturn -1\n\t}\n\n\treturn wordCounter\n}\n"
  },
  {
    "path": "Check Whether Two Strings are Almost Equivalent/kata.go",
    "content": "package Check_Whether_Two_Strings_are_Almost_Equivalent\n\nimport \"math\"\n\nfunc checkAlmostEquivalent(word1 string, word2 string) bool {\n\n\tif len(word1) != len(word2) {\n\t\treturn false\n\t}\n\n\twordCounter1 := [26]int{}\n\twordCounter2 := [26]int{}\n\tfor i := 0; i < len(word1); i++ {\n\t\twordCounter1[int(word1[i])-97]++\n\t\twordCounter2[int(word2[i])-97]++\n\t}\n\n\tfor i := 0; i < len(wordCounter1); i++ {\n\t\tdiff := math.Abs(float64(wordCounter1[i] - wordCounter2[i]))\n\t\tif diff > 3.0 {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "Check if All A's Appears Before All B's/kata.go",
    "content": "package Check_if_All_A_s_Appears_Before_All_B_s\n\nfunc checkString(s string) bool {\n\tfor i := 1; i < len(s); i++ {\n\t\tif s[i-1] == 'b' && s[i] == 'a' {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "Check if All Characters Have Equal Number of Occurrences/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc areOccurrencesEqual(s string) bool {\n\n\tchars := make(map[byte]int)\n\tfor i := 0; i < len(s); i++ {\n\t\tchars[s[i]]++\n\t}\n\n\tinf := int(math.Inf(1))\n\tmin := inf\n\tmax := inf\n\tfor _, count := range chars {\n\t\tif max == inf || count > max {\n\t\t\tmax = count\n\t\t}\n\t\tif min == inf || count < min {\n\t\t\tmin = count\n\t\t}\n\t}\n\n\treturn max == min\n}\n"
  },
  {
    "path": "Check if Binary String Has at Most One Segment of Ones/kata.go",
    "content": "package Check_if_Binary_String_Has_at_Most_One_Segment_of_Ones\n\nfunc checkOnesSegment(s string) bool {\n\n\tif len(s) == 1 && s[0] == '1' {\n\t\treturn true\n\t}\n\n\tc := 0\n\toneContiguousSegment := false\n\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] == '1' {\n\t\t\tif oneContiguousSegment {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tc++\n\t\t} else {\n\t\t\tif c >= 1 {\n\t\t\t\toneContiguousSegment = true\n\t\t\t}\n\n\t\t\tc = 0\n\t\t}\n\t}\n\n\tif c > 0 {\n\t\treturn true\n\t}\n\n\treturn oneContiguousSegment\n}\n"
  },
  {
    "path": "Check if Bitwise OR Has Trailing Zeros/kata.go",
    "content": "package kata\n\nfunc hasTrailingZeros(nums []int) bool {\n\tvar count int\n\tfor _, num := range nums {\n\t\tif num%2 == 0 {\n\t\t\tcount++\n\t\t\tif count == 2 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\treturn count == 2\n}\n"
  },
  {
    "path": "Check if Number Has Equal Digit Count and Digit Value/kata.go",
    "content": "package Check_if_Number_Has_Equal_Digit_Count_and_Digit_Value\n\nfunc digitCount(num string) bool {\n\n\tc := map[rune]int{}\n\tfor _, digit := range num {\n\t\tc[digit]++\n\t}\n\n\tfor i, digit := range num {\n\t\tif c[rune(i+48)] != int(digit-48) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "Check if Numbers Are Ascending in a Sentence/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc areNumbersAscending(s string) bool {\n\n\tcurrentNumber := int(math.Inf(-1))\n\tfor i := len(s) - 1; i >= 0; i-- {\n\t\tif s[i] >= 48 && s[i] <= 57 {\n\n\t\t\tn := 1\n\t\t\tnewNumber := (int(s[i]) - 48) * n\n\t\t\ti = i - 1\n\t\t\tfor ; i >= 0; i-- {\n\n\t\t\t\tif s[i] >= 48 && s[i] <= 57 {\n\t\t\t\t\tn = n * 10\n\t\t\t\t\tnewNumber += (int(s[i]) - 48) * n\n\t\t\t\t} else {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif currentNumber == int(math.Inf(-1)) {\n\t\t\t\tcurrentNumber = newNumber\n\t\t\t} else {\n\t\t\t\tif currentNumber <= newNumber {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tcurrentNumber = newNumber\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "Check if One String Swap Can Make Strings Equal/kata.go",
    "content": "package kata\n\nfunc areAlmostEqual(s1 string, s2 string) bool {\n\tif len(s1) != len(s1) {\n\t\treturn false\n\t}\n\tif s1 == s2 {\n\t\treturn true\n\t}\n\n\tvar distance int\n\tvar pairs [][]int\n\tfor i, codepoint := range s1 {\n\t\tif codepoint != rune(s2[i]) {\n\t\t\tdistance++\n\t\t\tif distance > 2 {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tpair := []int{int(codepoint), int(s2[i])}\n\t\t\tpairs = append(pairs, pair)\n\t\t}\n\t}\n\n\tif len(pairs) == 2 && pairs[0][0] == pairs[1][1] && pairs[0][1] == pairs[1][0] {\n\t\treturn true\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "Check if The Number is Fascinating/kata.go",
    "content": "package kata\n\nfunc isFascinating(n int) bool {\n\tvar stats = [9]int{}\n\tvar tracker int = 0\n\tfor i := 1; i <= 3; i++ {\n\t\tok := countDigits(n*i, &stats, &tracker)\n\t\tif !ok {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc countDigits(n int, stats *[9]int, tracker *int) bool {\n\tfor n > 0 {\n\t\tvar digit = n % 10\n\t\tn = n / 10\n\t\tdigit = digit - 1\n\t\tif digit == -1 || stats[digit] > 0 {\n\t\t\treturn false\n\t\t}\n\t\tstats[digit]++\n\t\t*tracker++\n\t}\n\treturn *tracker%3 == 0\n}\n"
  },
  {
    "path": "Check if Word Equals Summation of Two Words/kata.go",
    "content": "package kata\n\nfunc isSumEqual(firstWord string, secondWord string, targetWord string) bool {\n\treturn sum(firstWord)+sum(secondWord) == sum(targetWord)\n}\n\nfunc sum(s string) int {\n\tvar n int\n\tm := 1\n\tfor i := len(s) - 1; i >= 0; i-- {\n\t\tif s[i] != 'a' {\n\t\t\tn += (int(s[i]) - 97) * m\n\t\t}\n\t\tm = m * 10\n\t}\n\treturn n\n}\n"
  },
  {
    "path": "Check if an Array Is Consecutive/kata.go",
    "content": "package Check_if_an_Array_Is_Consecutive\n\nimport \"sort\"\n\nfunc isConsecutive(nums []int) bool {\n\n\tsort.Ints(nums)\n\n\tmin, max := nums[0], nums[0]+len(nums)-1\n\n\tfor i := 1; i < len(nums); i++ {\n\t\tif (nums[i] >= min && nums[i] <= max) && (nums[i-1] >= min && nums[i-1] <= max) {\n\t\t\tif nums[i]-nums[i-1] != 1 {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "Check if the Sentence Is Pangram/kata.go",
    "content": "package kata\n\nfunc checkIfPangram(sentence string) bool {\n\n\tvar abc [26]int\n\tvar count int\n\tfor _, char := range sentence {\n\t\tabc[char-97] += 1\n\t\tif abc[char-97] == 1 {\n\t\t\tcount++\n\t\t}\n\t}\n\n\tif count != 26 {\n\t\treturn false\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "Classes More Than 5 Students/kata.sql",
    "content": "package kata\n\nSELECT class FROM courses GROUP BY class HAVING COUNT(DISTINCT(student)) >= 5;\n"
  },
  {
    "path": "Climbing Stairs/kata.go",
    "content": "package kata\n\nfunc climbStairs(n int) int {\n\tif n == 1 {\n\t\treturn 1\n\t}\n\tdp := make([]int, n+1)\n\tdp[1] = 1\n\tdp[2] = 2\n\tfor i := 3; i <= n; i++ {\n\t\tdp[i] = dp[i-1] + dp[i-2]\n\t}\n\treturn dp[n]\n}\n"
  },
  {
    "path": "Combine Two Tables/kata.sql",
    "content": "package kata\n\n# Write your MySQL query statement below\nSELECT p.FirstName, p.LastName, City, State FROM Person p LEFT JOIN Address a ON a.PersonId = p.PersonId; \n"
  },
  {
    "path": "Compare Strings by Frequency of the Smallest Character/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc numSmallerByFrequency(queries []string, words []string) []int {\n\tnums := make([]int, len(queries))\n\tmemory := make(map[string]int)\n\tfor i, query := range queries {\n\t\tvar count int\n\t\tqueryFrequency := f([]byte(query))\n\t\tfor _, word := range words {\n\t\t\twordFrequency, ok := memory[word]\n\t\t\tif !ok {\n\t\t\t\twordFrequency = f([]byte(word))\n\t\t\t\tmemory[word] = wordFrequency\n\t\t\t}\n\n\t\t\tif wordFrequency > queryFrequency {\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t\tnums[i] = count\n\t}\n\treturn nums\n}\n\nfunc f(s []byte) int {\n\tsort.Slice(s, func(i, j int) bool {\n\t\treturn s[i] < s[j]\n\t})\n\tlastChar := s[0]\n\tc := 1\n\tfor i := 1; i < len(s); i++ {\n\t\tif lastChar != s[i] {\n\t\t\treturn c\n\t\t}\n\t\tc++\n\t\tlastChar = s[i]\n\t}\n\treturn c\n}\n"
  },
  {
    "path": "Complement of Base 10 Integer/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc bitwiseComplement(N int) int {\n\tif N == 0 {\n\t\treturn 1\n\t} else if N == 1 {\n\t\treturn 0\n\t}\n\n\tvar sum int\n\tvar k int\n\tfor N > 0 {\n\t\tb := N % 2\n\t\tN = N / 2\n\t\tif b == 0 {\n\t\t\tb = 1\n\t\t} else {\n\t\t\tb = 0\n\t\t}\n\n\t\tsum += b * int(math.Pow(2, float64(k)))\n\t\tk++\n\t}\n\n\treturn sum\n}\n"
  },
  {
    "path": "Compute the Rank as a Percentage/q.sql",
    "content": "\nWITH cte\n         AS (SELECT student_id,\n                    department_id,\n                    RANK() OVER (PARTITION BY department_id ORDER BY mark DESC) student_rank_in_the_department,\n                     COUNT(*) OVER (PARTITION BY department_id) AS the_number_of_students_in_the_department\n             FROM Students)\n\nSELECT student_id,\n       department_id,\n       COALESCE(ROUND((student_rank_in_the_department - 1) * 100 / (the_number_of_students_in_the_department - 1), 2), 0) AS percentage\nFROM cte\nGROUP BY student_id;"
  },
  {
    "path": "Concatenate the Name and the Profession/q.sql",
    "content": "SELECT person_id, CONCAT(name, '(', LEFT(profession, 1) ,')') as name FROM Person ORDER BY person_id DESC;"
  },
  {
    "path": "Concatenation of Array/kata.go",
    "content": "package kata\n\nfunc getConcatenation(nums []int) []int {\n\n\tnumsDouble := make([]int, len(nums)*2)\n\tfor i := 0; i < len(nums); i++ {\n\t\tnumsDouble[i] = nums[i]\n\t\tnumsDouble[i+len(nums)] = nums[i]\n\t}\n\n\treturn numsDouble\n}\n"
  },
  {
    "path": "Confusing Number/kata.java",
    "content": "class Solution {\n    public boolean confusingNumber(int num) {\n        var digitCount = ((int) Math.log10((double) num));\n        var reversedCount = 0;\n        var oldNum = num;\n        var newNum = 0;\n        for (; digitCount >= 0; digitCount--) {\n            var digit = (num/(int) Math.pow(10, (double) digitCount)) % 10;\n            if (digit == 2 || digit == 3 || digit == 4 || digit == 5 || digit == 7) {\n                return false;\n            }\n            if (digit == 6) {\n                digit = 9;\n            } else if (digit == 9) {\n                digit = 6;\n            }\n            newNum += digit * Math.pow(10, (double) reversedCount);\n            reversedCount++;\n        }\n        return oldNum != newNum;\n    }\n}"
  },
  {
    "path": "Consecutive Available Seats/q.sql",
    "content": "((\n     SELECT\n         b.seat_id\n     FROM\n         Cinema AS a\n             INNER JOIN\n         Cinema AS b\n         ON b.seat_id + 1 = a.seat_id\n     WHERE\n             a.free = 1\n       AND b.free = 1)\n UNION\n (\n     SELECT\n         b.seat_id\n     FROM\n         Cinema AS a\n             INNER JOIN\n         Cinema AS b\n         ON b.seat_id - 1 = a.seat_id\n     WHERE\n             a.free = 1\n       AND b.free = 1))\n    ORDER BY\n        seat_id"
  },
  {
    "path": "Consecutive Characters/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc maxPower(s string) int {\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\tif len(s) == 1 {\n\t\treturn 1\n\t}\n\tcount := 1\n\n\tmaxCount := int(math.Inf(-1))\n\tlastChar := s[0]\n\tfor i := 1; i < len(s); i++ {\n\n\t\tif s[i] == lastChar {\n\t\t\tcount++\n\t\t} else {\n\t\t\tlastChar = s[i]\n\t\t\tcount = 1\n\t\t}\n\n\t\tif maxCount == int(math.Inf(-1)) || count > maxCount {\n\t\t\tmaxCount = count\n\t\t}\n\t}\n\treturn maxCount\n}\n"
  },
  {
    "path": "Construct Binary Search Tree from Preorder Traversal/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc bstFromPreorder(preorder []int) *TreeNode {\n\tif len(preorder) == 0 {\n\t\treturn nil\n\t}\n\troot := &TreeNode{\n\t\tVal: preorder[0],\n\t}\n\tfor _, v := range preorder[1:] {\n\t\tbuild(root, v)\n\t}\n\treturn root\n}\n\nfunc build(node *TreeNode, v int) {\n\tif node.Val > v {\n\t\tif node.Left == nil {\n\t\t\tnode.Left = &TreeNode{Val: v}\n\t\t} else {\n\t\t\tbuild(node.Left, v)\n\t\t}\n\t} else if node.Val < v {\n\t\tif node.Right == nil {\n\t\t\tnode.Right = &TreeNode{Val: v}\n\t\t} else {\n\t\t\tbuild(node.Right, v)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Construct String from Binary Tree/kata.java",
    "content": "/**\n * Definition for a binary tree node.\n * public class TreeNode {\n *     int val;\n *     TreeNode left;\n *     TreeNode right;\n *     TreeNode() {}\n *     TreeNode(int val) { this.val = val; }\n *     TreeNode(int val, TreeNode left, TreeNode right) {\n *         this.val = val;\n *         this.left = left;\n *         this.right = right;\n *     }\n * }\n */\nclass Solution {\n    public String tree2str(TreeNode root) {\n        var pattern = new StringBuilder(\"\");\n        generatePattern(root, pattern);\n        return pattern.toString();\n    }\n    private void generatePattern(TreeNode node, StringBuilder pattern) {\n           pattern.append(Integer.valueOf(node.val));\n\n           if (node.left == null && node.right != null) {\n              pattern.append('(');\n              pattern.append(')');\n           }else if (node.left != null) {\n              pattern.append('(');\n              generatePattern(node.left, pattern);\n              pattern.append(')');\n           }\n\n            if (node.right != null) {\n              pattern.append('(');\n              generatePattern(node.right, pattern);\n              pattern.append(')');\n           }\n\n        return;\n    }\n}"
  },
  {
    "path": "Construct the Rectangle/kata.go",
    "content": "package Construct_the_Rectangle\n\nimport \"math\"\n\nfunc constructRectangle(area int) []int {\n\tif area == 1 {\n\t\treturn []int{1, 1}\n\t}\n\n\tnl, w, l := area, 0, 0\n\tdiff := math.Inf(1)\n\tfor {\n\t\tif area%nl == 0 {\n\t\t\tnw := area / nl\n\t\t\tif nw > nl {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif diff > float64(nl-nw) {\n\n\t\t\t\tw = nw\n\t\t\t\tl = nl\n\t\t\t\tdiff = float64(nl - nw)\n\t\t\t}\n\n\t\t}\n\t\tnl--\n\t}\n\treturn []int{l, w}\n}\n"
  },
  {
    "path": "Contains Duplicate/kata.go",
    "content": "package kata\n\nfunc containsDuplicate(nums []int) bool {\n\tcounter := make(map[int]int)\n\tfor i := 0; i < len(nums); i++ {\n\t\tcounter[nums[i]] = counter[nums[i]] + 1\n\t\tif counter[nums[i]] > 1 {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "Contains Duplicate II/kata.go",
    "content": "package kata\n\nfunc containsNearbyDuplicate(nums []int, k int) bool {\n\n\ti := 0\n\tj := i + 1\n\tfor i < len(nums) {\n\n\t\tif j == len(nums) {\n\t\t\ti++\n\t\t\tj = i + 1\n\t\t\tcontinue\n\t\t}\n\t\tif nums[i] != nums[j] {\n\t\t\tj++\n\t\t\tcontinue\n\t\t}\n\n\t\tif (j - i) <= k {\n\t\t\treturn true\n\t\t}\n\t\ti++\n\t\tj = i + 1\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "Convert 1D Array Into 2D Array/kata.go",
    "content": "package kata\n\nfunc construct2DArray(original []int, m int, n int) [][]int {\n\n\tif m*n != len(original) {\n\t\treturn [][]int{}\n\t}\n\n\tmatrix := make([][]int, m)\n\tfor i := range matrix {\n\t\tmatrix[i] = make([]int, n)\n\t}\n\n\tk := n\n\ti := 0\n\tj := 0\n\tfor _, b := range original {\n\t\tmatrix[j][i] = b\n\t\tk--\n\t\tif k == 0 {\n\t\t\tj++\n\t\t\tk = n\n\t\t\ti = 0\n\t\t} else {\n\t\t\ti++\n\t\t}\n\t}\n\n\treturn matrix\n\n}\n"
  },
  {
    "path": "Convert Binary Number in a Linked List to Integer/kata.go",
    "content": "package kata\n\n/**\n * Definition for singly-linked list.\n * type ListNode struct {\n *     Val int\n *     Next *ListNode\n * }\n */\n\ntype NodeBacklink struct {\n\t*ListNode\n\tPrev *NodeBacklink\n}\n\nfunc getDecimalValue(head *ListNode) int {\n\n\tcurrent := &NodeBacklink{ListNode: head}\n\tfor current.Next != nil {\n\t\tcurrent = &NodeBacklink{ListNode: current.Next, Prev: current}\n\t}\n\n\tvar sum int\n\tif current != nil {\n\t\tif current.Val == 1 {\n\t\t\tsum += 1\n\t\t}\n\t\tcurrent = current.Prev\n\t} else {\n\t\treturn sum\n\t}\n\n\tstep := 1\n\tfor current != nil {\n\t\tstep = step * 2\n\t\tif current.Val == 1 {\n\t\t\tsum += step\n\t\t}\n\t\tcurrent = current.Prev\n\t}\n\n\treturn sum\n}\n"
  },
  {
    "path": "Convert Date Format/q.sql",
    "content": "SELECT DATE_FORMAT(day, \"%W, %M %e, %Y\") AS day FROM Days;"
  },
  {
    "path": "Convert Integer to the Sum of Two No-Zero Integers/kata.go",
    "content": "package Convert_Integer_to_the_Sum_of_Two_No_Zero_Integers\n\nfunc getNoZeroIntegers(n int) []int {\n\ti := 1\n\tvar k int\n\tfor {\n\t\tk = n - i\n\t\tif !hasZeros(k) && !hasZeros(i) {\n\t\t\treturn []int{i, k}\n\t\t}\n\n\t\ti++\n\t}\n}\n\nfunc hasZeros(num int) bool {\n\tfor num > 0 {\n\t\tif num%10 == 0 {\n\t\t\treturn true\n\t\t}\n\t\tnum /= 10\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "Convert a Number to Hexadecimal/kata.go",
    "content": "package kata\n\nimport \"math/bits\"\n\nfunc toHex(num int) string {\n\tif num == 0 {\n\t\treturn \"0\"\n\t}\n\n\tn := uint(num)\n\n\thex := make([]byte, 0)\n\n\tfor {\n\t\tvar r uint\n\t\tn, r = bits.Div(0, n, 16)\n\t\tif r >= 0 && r <= 9 {\n\t\t\thex = append(hex, 48+byte(r))\n\t\t} else if r >= 10 && r <= 15 {\n\t\t\thex = append(hex, 97+byte(r)-10)\n\t\t}\n\n\t\tif len(hex) == 8 {\n\t\t\tbreak\n\t\t}\n\n\t\tif n == 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tj := len(hex) - 1\n\tfor i := 0; i < len(hex)/2; i++ {\n\t\thex[i], hex[j] = hex[j], hex[i]\n\t\tj--\n\t}\n\n\treturn string(hex)\n}\n"
  },
  {
    "path": "Convert the Temperature/kata.java",
    "content": "class Solution {\n    public double[] convertTemperature(double celsius) {\n        double fahrenheit = (celsius * 9/5) + 32;\n        double kelvin = celsius + 273.15;\n        return DoubleStream.of(kelvin, fahrenheit).toArray();\n    }\n}"
  },
  {
    "path": "Count Apples and Oranges/q.sql",
    "content": "SELECT (SUM(b.apple_count)+COALESCE(SUM(c.apple_count), 0)) AS apple_count,\n       (SUM(b.orange_count)+COALESCE(SUM(c.orange_count), 0)) AS orange_count\nFROM Boxes AS b\n         LEFT JOIN Chests AS c ON b.chest_id = c.chest_id;"
  },
  {
    "path": "Count Asterisks/kata.java",
    "content": "class Solution {\n    public int countAsterisks(String s) {\n        var skip = false;\n        var count = 0;\n        for (var i = 0; i < s.length(); i++) {\n            if (s.charAt(i) == '|' && !skip) {\n                skip = true;\n                continue;\n            } else if (s.charAt(i) == '|' && skip) {\n                skip = false;\n                continue;\n            }\n            if (skip) {\n                continue;\n            }\n            if (s.charAt(i) == '*') {\n                count++;\n            }\n        }\n        return count;\n    }\n}"
  },
  {
    "path": "Count Common Words With One Occurrence/kata.go",
    "content": "package kata\n\nfunc countWords(words1 []string, words2 []string) int {\n\n\ttype wordCounter struct {\n\t\tA, B int\n\t}\n\n\tcounter := make(map[string]wordCounter)\n\n\tfor _, word := range words1 {\n\t\twordCounter := counter[word]\n\t\twordCounter.A++\n\t\tcounter[word] = wordCounter\n\t}\n\n\tfor _, word := range words2 {\n\t\twordCounter := counter[word]\n\t\twordCounter.B++\n\t\tcounter[word] = wordCounter\n\t}\n\n\tvar total int\n\tfor _, wordCounter := range counter {\n\t\tif wordCounter.A == 1 && wordCounter.B == 1 {\n\t\t\ttotal++\n\t\t}\n\n\t}\n\n\treturn total\n}\n"
  },
  {
    "path": "Count Complete Tree Nodes/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc countNodes(root *TreeNode) int {\n\tif root == nil {\n\t\treturn 0\n\t}\n\tc := new(int)\n\t*c++\n\tcount(root, c)\n\treturn *c\n}\n\nfunc count(node *TreeNode, c *int) {\n\tif node == nil {\n\t\treturn\n\t}\n\tif node.Left != nil {\n\t\t*c++\n\t\tcount(node.Left, c)\n\t}\n\tif node.Right != nil {\n\t\t*c++\n\t\tcount(node.Right, c)\n\t}\n}\n"
  },
  {
    "path": "Count Elements With Maximum Frequency/kata.go",
    "content": "package kata\n\nfunc maxFrequencyElements(nums []int) int {\n    var max = 0\n    var total = 0\n    frequencies := make(map[int]int, 0)\n    for _, num := range nums {\n        frequency := frequencies[num]\n        frequency++\n        if frequency > max {\n            max = frequency\n            total = 0\n        }\n        if frequency == max {\n           total += max\n        }\n        frequencies[num] = frequency\n    }\n\n    return total\n}"
  },
  {
    "path": "Count Elements With Strictly Smaller and Greater Elements/kata.go",
    "content": "package Count_Elements_With_Strictly_Smaller_and_Greater_Elements\n\nimport \"sort\"\n\nfunc countElements(nums []int) int {\n\tif len(nums) < 3 {\n\t\treturn 0\n\t}\n\n\tsort.Ints(nums)\n\n\tvar k int\n\tvar t int\n\tfor i := 2; i < len(nums); i++ {\n\t\tif nums[i-2] < nums[i-1] && nums[i-1] < nums[i] {\n\t\t\tk++\n\t\t} else if nums[i-2] < nums[i-1] && nums[i-1] == nums[i] {\n\t\t\tt = 2\n\t\t} else if nums[i-2] == nums[i-1] && nums[i-1] < nums[i] {\n\t\t\tk += t\n\t\t\tt = 0\n\t\t} else if nums[i-2] == nums[i-1] && nums[i-1] == nums[i] {\n\t\t\tif t > 0 {\n\t\t\t\tt++\n\t\t\t}\n\t\t}\n\t}\n\n\treturn k\n}\n"
  },
  {
    "path": "Count Integers With Even Digit Sum/kata.go",
    "content": "package Count_Integers_With_Even_Digit_Sum\n\nvar mem = map[int]int{}\n\nfunc countEven(num int) int {\n\n\tc := 0\n\ti := 1\n\tfor i <= num {\n\t\te, ok := mem[i]\n\t\tif !ok {\n\t\t\tn := i\n\t\t\tvar sum int\n\t\t\tfor {\n\t\t\t\tk := n % 10\n\t\t\t\tsum += k\n\t\t\t\tn = n / 10\n\t\t\t\tif n == 0 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tmem[i] = sum\n\t\t\tif sum%2 == 0 {\n\t\t\t\tc++\n\t\t\t}\n\t\t} else {\n\t\t\tif e%2 == 0 {\n\t\t\t\tc++\n\t\t\t}\n\t\t}\n\t\ti++\n\t}\n\n\treturn c\n}\n"
  },
  {
    "path": "Count Items Matching a Rule/kata.go",
    "content": "package kata\n\nfunc countMatches(items [][]string, ruleKey string, ruleValue string) int {\n\n\tidx := 0\n\tif ruleKey == \"type\" {\n\t\tidx = 0\n\t} else if ruleKey == \"color\" {\n\t\tidx = 1\n\t} else if ruleKey == \"name\" {\n\t\tidx = 2\n\t}\n\n\tvar count int\n\tfor _, item := range items {\n\t\tif item[idx] == ruleValue {\n\t\t\tcount++\n\t\t}\n\t}\n\n\treturn count\n}\n"
  },
  {
    "path": "Count Largest Group/kata.java",
    "content": "class Solution {\n    public int countLargestGroup(int n) {\n        HashMap<Integer, Integer> bucket = new HashMap<>();\n        HashMap<Integer, Integer> count = new HashMap<>();\n        for (var unmodifiedNum = 1; unmodifiedNum < n+1; unmodifiedNum++) {\n             var sum = 0;\n             var num = unmodifiedNum;\n\n            if (num <= 9) {\n                bucket.put(num, num);\n                count.put(num,  1);\n                continue;\n            }\n            do {\n                var r = num % 10;\n                sum =+ r;\n                num = num / 10;\n                if (bucket.containsKey(num)) {\n                  count.put(bucket.get(num)+sum, count.getOrDefault(bucket.get(num)+sum, 0) + 1);\n                  break;\n                }\n             } while(num != 0);\n\n            bucket.put(unmodifiedNum, bucket.get(num)+sum);\n        }\n\n        var max = -1;\n        var countMax = 0;\n        for (Map.Entry<Integer, Integer> entry : count.entrySet()) {\n            if (max == -1 || max < entry.getValue()) {\n                max = entry.getValue();\n            }\n        }\n\n        for (Map.Entry<Integer, Integer> entry : count.entrySet()) {\n            if (max == entry.getValue()) {\n                countMax++;\n            }\n        }\n\n        return countMax;\n    }\n}"
  },
  {
    "path": "Count Negative Numbers in a Sorted Matrix/kata.rs",
    "content": "package kata\n\nimpl Solution {\n    pub fn count_negatives(grid: Vec<Vec<i32>>) -> i32 {\n        let mut counter: i32 = 0;\n        let bound: i32 = 0; \n        for vector in grid.iter() {\n                for num in vector.iter() {\n                    if num < &bound {\n                        counter += 1\n                    }\n                }\n            }\n        return counter\n    }\n}\n"
  },
  {
    "path": "Count Odd Numbers in an Interval Range/kata.go",
    "content": "package kata\n\nfunc countOdds(low int, high int) int {\n\tvar count int\n\tfor ; low < high+1; low++ {\n\t\tif low%2 == 1 {\n\t\t\tcount++\n\t\t}\n\t}\n\treturn count\n}\n"
  },
  {
    "path": "Count Operations to Obtain Zero/kata.go",
    "content": "package Count_Operations_to_Obtain_Zero\n\nfunc countOperations(num1 int, num2 int) int {\n\n\tif num1 == 0 || num2 == 0 {\n\t\treturn 0\n\t}\n\n\tvar c int\n\tfor {\n\t\ta := num1\n\t\tnum1 = max(num1, num2)\n\t\tnum2 = min(a, num2)\n\n\t\tnum1 = num1 - num2\n\n\t\tc++\n\t\tif num1 == 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn c\n}\n\nfunc max(a, b int) int {\n\tif a > b {\n\t\treturn a\n\t}\n\treturn b\n}\n\nfunc min(a, b int) int {\n\tif a < b {\n\t\treturn a\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "Count Prefixes of a Given String/kata.go",
    "content": "package Count_Prefixes_of_a_Given_String\n\nfunc countPrefixes(words []string, s string) int {\n\tvar count int\n\tfor _, w := range words {\n\t\tif len(w) > len(s) {\n\t\t\tcontinue\n\t\t}\n\t\tif w == s[:len(w)] {\n\t\t\tcount++\n\t\t}\n\t}\n\treturn count\n}\n"
  },
  {
    "path": "Count Student Number in Departments/q.sql",
    "content": "SELECT dept_name,\n       COUNT(s.dept_id) AS student_number\nFROM Department AS d\n         LEFT JOIN Student AS s\n                   ON s.dept_id = d.dept_id\nGROUP BY dept_name\nORDER BY student_number DESC,\n         dept_name ASC;"
  },
  {
    "path": "Count Substrings Starting and Ending with Given Character/kata.py",
    "content": "import math\n        \nclass Solution(object):\n    def countSubstrings(self, s, c):\n        \"\"\"\n        :type s: str\n        :type c: str\n        :rtype: int\n        \"\"\"\n        count = 0\n        for char in s:\n            if char == c:\n                count = count + 1\n\n        return count + math.comb(count,2)\n        "
  },
  {
    "path": "Count Tested Devices After Test Operations/kata.go",
    "content": "package kata\n\nfunc countTestedDevices(batteryPercentages []int) int {\n\tvar counter int\n\tfor i := 0; i < len(batteryPercentages); i++ {\n\t\tif (batteryPercentages[i] - counter) == 0 {\n\t\t\tcontinue\n\t\t} else if (batteryPercentages[i] - counter) > 0 {\n\t\t\tcounter++\n\t\t}\n\t}\n\treturn counter\n}\n"
  },
  {
    "path": "Count Total Number of Colored Cells/kata.go",
    "content": "package kata\n\nfunc coloredCells(n int) int64 {\n\tk := int64(n)\n\treturn k*k + (k-1)*(k-1)\n}\n"
  },
  {
    "path": "Count of Matches in Tournament/kata.go",
    "content": "package kata\n\nfunc numberOfMatches(n int) int {\n\n\tvar totalMatches int\n\tfor n > 1 {\n\t\tif n%2 == 0 {\n\t\t\tn = n / 2\n\t\t\ttotalMatches += n\n\t\t} else {\n\t\t\tn = (n - 1) / 2\n\t\t\ttotalMatches += n\n\t\t\tn = n + 1\n\t\t}\n\t}\n\n\treturn totalMatches\n}\n"
  },
  {
    "path": "Count the Digits That Divide a Number/kata.java",
    "content": "class Solution {\n    public int countDigits(int num) {\n        var c = 0;\n        var oldNum = num;\n        do {\n         var r = num % 10;\n         num = num / 10;\n         if (oldNum % r == 0) {\n             c++;\n         }\n        } while (num != 0);\n\n        return c;\n    }\n}"
  },
  {
    "path": "Count the Number of Consistent Strings/kata.go",
    "content": "package kata\n\nfunc countConsistentStrings(allowed string, words []string) int {\n\n\tset := make(map[rune]bool)\n\tfor _, char := range allowed {\n\t\tset[char] = true\n\t}\n\n\tvar count int\n\tfor _, word := range words {\n\t\tok := true\n\t\tfor _, char := range word {\n\t\t\tif !set[char] {\n\t\t\t\tok = false\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif ok {\n\t\t\tcount++\n\t\t}\n\t}\n\n\treturn count\n}\n"
  },
  {
    "path": "Counter/kata.ts",
    "content": "function createCounter(n: number): () => number { \n    return function() {\n        return n++\n    }\n}\n\n\n/** \n * const counter = createCounter(10)\n * counter() // 10\n * counter() // 11\n * counter() // 12\n */"
  },
  {
    "path": "Counter II/kata.ts",
    "content": "type Counter = {\n    increment: () => number,\n    decrement: () => number,\n    reset: () => number,\n}\n\nfunction createCounter(init: number): Counter {\n    return new counter(init)\n};\n\nclass counter implements Counter {\n  private value: number;\n  private init: number;\n \n  public constructor(init: number) {\n    this.value = init;\n    this.init = init;\n  }\n \n  public increment() :number {\n    this.value++\n    return this.value\n  }\n\n  public decrement() :number {\n    this.value--\n    return this.value\n  }\n\n   public reset() :number {\n    this.value = this.init\n    return this.value\n  }\n}\n\n/**\n * const counter = createCounter(5)\n * counter.increment(); // 6\n * counter.reset(); // 5\n * counter.decrement(); // 4\n */"
  },
  {
    "path": "Counting Bits/kata.go",
    "content": "package kata\n\nfunc countBits(n int) []int {\n\to := make([]int, n+1)\n\tfor k := 0; k <= n; k++ {\n\t\tvar num = k\n\t\tvar count int\n\t\tfor num > 0 {\n\t\t\tcount += num & 1\n\t\t\tnum >>= 1\n\t\t}\n\t\to[k] = count\n\t}\n\treturn o\n}\n"
  },
  {
    "path": "Counting Elements/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc countElements(arr []int) int {\n\tinit := int(math.Inf(-1))\n\n\tmax := init\n\tmin := init\n\tset := make(map[int]int)\n\n\tfor i := 0; i < len(arr); i++ {\n\t\tset[arr[i]] += 1\n\n\t\tif max == init || arr[i] > max {\n\t\t\tmax = arr[i]\n\t\t}\n\n\t\tif min == init || arr[i] < min {\n\t\t\tmin = arr[i]\n\t\t}\n\t}\n\n\tlastElement := min\n\tglobalMax := 0\n\tfirst := true\n\tfor i := min + 1; i < max+1; i++ {\n\t\tc, ok := set[i]\n\t\tif !ok {\n\t\t\tlastElement = lastElement + 1\n\t\t\tfirst = false\n\t\t\tcontinue\n\t\t}\n\n\t\tif lastElement+1 == i {\n\t\t\tnextCounter := set[i+1]\n\t\t\tif nextCounter > 0 {\n\t\t\t\tglobalMax += c\n\t\t\t}\n\t\t\tif first {\n\t\t\t\tglobalMax += set[min]\n\t\t\t}\n\t\t}\n\t\tfirst = false\n\t\tlastElement = lastElement + 1\n\t}\n\treturn globalMax\n}\n"
  },
  {
    "path": "Counting Words With a Given Prefix/kata.go",
    "content": "package Counting_Words_With_a_Given_Prefix\n\nfunc prefixCount(words []string, pref string) int {\n\tvar c int\n\tfor _, w := range words {\n\t\tif len(w) >= len(pref) && w[:len(pref)] == pref {\n\t\t\tc++\n\t\t}\n\t}\n\treturn c\n}\n"
  },
  {
    "path": "Cousins in Binary Tree/kata.go",
    "content": "package kata\n\nimport \"container/list\"\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\n\ntype TreeNodeWrapper struct {\n\tp *TreeNode\n\tn *TreeNode\n\tl int\n}\n\ntype check struct {\n\tp int\n\tl int\n}\n\nfunc isCousins(node *TreeNode, x int, y int) bool {\n\tif node == nil {\n\t\treturn false\n\t}\n\tqueue := list.New()\n\n\tqueue.PushBack(&TreeNodeWrapper{n: node, l: 1})\n\n\tvar xLevel *check\n\tvar yLevel *check\n\tnodeWrapper := TreeNodeWrapper{}\n\tfor queue.Len() > 0 {\n\t\te := queue.Front()\n\t\tw := e.Value.(*TreeNodeWrapper)\n\n\t\tif yLevel != nil && xLevel != nil {\n\t\t\tbreak\n\t\t}\n\n\t\tif w.p != nil && w.n.Val == x {\n\t\t\txLevel = &check{\n\t\t\t\tp: w.p.Val,\n\t\t\t\tl: w.l,\n\t\t\t}\n\t\t}\n\t\tif w.p != nil && w.n.Val == y {\n\t\t\tyLevel = &check{\n\t\t\t\tp: w.p.Val,\n\t\t\t\tl: w.l,\n\t\t\t}\n\t\t}\n\t\tif w.n.Left != nil {\n\t\t\tleftNode := nodeWrapper\n\t\t\tleftNode.p = w.n\n\t\t\tleftNode.n = w.n.Left\n\t\t\tleftNode.l = w.l + 1\n\t\t\tqueue.PushBack(&leftNode)\n\t\t}\n\t\tif w.n.Right != nil {\n\t\t\trightNode := nodeWrapper\n\t\t\trightNode.p = w.n\n\t\t\trightNode.n = w.n.Right\n\t\t\trightNode.l = w.l + 1\n\t\t\tqueue.PushBack(&rightNode)\n\t\t}\n\t\tqueue.Remove(e)\n\t}\n\n\treturn yLevel != nil && xLevel != nil && yLevel.l == xLevel.l && yLevel.p != xLevel.p\n}\n"
  },
  {
    "path": "Create Hello World Function/kata.ts",
    "content": "function createHelloWorld() {\n    \n    return function(...args): string {\n        return \"Hello World\"\n    };\n};\n\n/**\n * const f = createHelloWorld();\n * f(); // \"Hello World\"\n */"
  },
  {
    "path": "Create Target Array in the Given Order/kata.go",
    "content": "package kata\n\nfunc createTargetArray(nums []int, index []int) []int {\n\tif len(nums) != len(index) {\n\t\tpanic(\"index and nums len is unequal\")\n\t}\n\n\ttarget := make([]int, len(nums))\n\tfor i := range target {\n\t\ttarget[i] = -1\n\t}\n\n\tfor i := range nums {\n\t\tif target[index[i]] > -1 {\n\t\t\tval := target[index[i]]\n\t\t\ttarget[index[i]] = nums[i]\n\n\t\t\tj := index[i] + 1\n\t\t\tfor j < len(target) {\n\t\t\t\tjVal := target[j]\n\t\t\t\ttarget[j] = val\n\t\t\t\tval = jVal\n\t\t\t\tj++\n\t\t\t}\n\t\t\tcontinue\n\t\t} else {\n\t\t\ttarget[index[i]] = nums[i]\n\t\t}\n\t}\n\treturn target\n}\n"
  },
  {
    "path": "Create a DataFrame from List/kata.py",
    "content": "import pandas as pd\n\ndef createDataframe(student_data: List[List[int]]) -> pd.DataFrame:\n    return pd.DataFrame(student_data, columns=['student_id', 'age'])\n"
  },
  {
    "path": "Create a New Column/kata.py",
    "content": "import pandas as pd\n\ndef createBonusColumn(employees: pd.DataFrame) -> pd.DataFrame:\n    employees[\"bonus\"] = employees[\"salary\"] * 2 \n    return employees"
  },
  {
    "path": "Create a Session Bar Chart/q.sql",
    "content": "\nWITH cte AS (SELECT\n    COUNT(CASE WHEN (duration/60) <= 5 THEN session_id END) AS total_1,\n    COUNT(CASE WHEN (duration/60) <= 10 AND (duration/60) > 5 THEN session_id END) AS total_2,\n    COUNT(CASE WHEN (duration/60) <= 15 AND (duration/60) > 10 THEN session_id END) AS total_3,\n    COUNT(CASE WHEN (duration/60) >= 15 THEN session_id END) AS total_4,\n    \"[0-5>\" AS bin_1,\n    \"[5-10>\" AS bin_2,\n    \"[10-15>\"AS bin_3,\n    \"15 or more\"AS bin_4\nFROM Sessions)\n\n\n\nSELECT bin_1 AS bin, total_1 AS total FROM cte\nUNION ALL\nSELECT bin_2 AS bin, total_2 AS total FROM cte\nUNION ALL\nSELECT bin_3 AS bin, total_3 AS total FROM cte\nUNION ALL\nSELECT bin_4 AS bin, total_4 AS total FROM cte"
  },
  {
    "path": "Custom Sort String/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc customSortString(S string, T string) string {\n\torder := 1\n\torders := make(map[rune]int)\n\tfor _, char := range S {\n\t\torders[char] = order\n\t\torder++\n\t}\n\n\tK := []rune(T)\n\tsort.Slice(K, func(i, j int) bool {\n\t\treturn orders[K[i]] < orders[K[j]]\n\t})\n\treturn string(K)\n}\n"
  },
  {
    "path": "Customer Placing the Largest Number of Orders/q.sql",
    "content": "SELECT customer_number FROM Orders AS o GROUP BY customer_number ORDER BY COUNT(order_number) DESC LIMIT 1;"
  },
  {
    "path": "Customer Who Visited but Did Not Make Any Transactions/q.sql",
    "content": "SELECT customer_id, COUNT(*) AS count_no_trans FROM Visits WHERE visit_id NOT IN (SELECT visit_id FROM Transactions) GROUP BY customer_id;"
  },
  {
    "path": "Customers Who Never Order/kata.sql",
    "content": "package kata\n\nSELECT c.name as Customers FROM Customers c left join Orders o on o.CustomerId = c.Id WHERE o.Id IS NULL;\n"
  },
  {
    "path": "DI String Match/kata.go",
    "content": "package kata\n\nfunc diStringMatch(S string) []int {\n\tn := make([]int, len(S)+1)\n\tj := len(S)\n\tk := 0\n\tfor i := 0; i < len(S); i++ {\n\t\tif S[i] == 'I' {\n\t\t\tn[i] = k\n\t\t\tk++\n\t\t} else {\n\t\t\tn[i] = j\n\t\t\tj--\n\t\t}\n\t}\n\n\tif S[len(S)-1] == 'I' {\n\t\tn[len(n)-1] = j\n\t} else {\n\t\tn[len(n)-1] = k\n\t}\n\treturn n\n}\n"
  },
  {
    "path": "Daily Leads and Partners/q.sql",
    "content": "SELECT date_id, make_name, COUNT(DISTINCT lead_id) AS unique_leads, COUNT(DISTINCT partner_id) AS unique_partners\nFROM DailySales\nGROUP BY date_id, make_name;"
  },
  {
    "path": "Day of the Year/kata.go",
    "content": "package Day_of_the_Year\n\nimport (\n\t\"time\"\n)\n\nfunc dayOfYear(date string) int {\n\td, err := time.Parse(\"2006-01-02\", date)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tcurrentYear := d.Year()\n\tsum := d.Day()\n\tfor {\n\t\td = d.Add(-24 * time.Hour * time.Duration(d.Day()))\n\t\tif d.Year() != currentYear {\n\t\t\tbreak\n\t\t}\n\t\tsum += d.Day()\n\t}\n\treturn sum\n}\n"
  },
  {
    "path": "Decode XORed Array/kata.go",
    "content": "package Decode_XORed_Array]\n\nfunc decode(encoded []int, first int) []int {\n\tdecoded := make([]int, len(encoded)+1)\n\tdecoded[0] = first\n\tfor i, n := range encoded {\n\t\ti = i+1\n\t\tinverse := first ^ n\n\t\tdecoded[i] = inverse\n\t\tfirst = inverse\n\t}\n\treturn decoded\n}\n"
  },
  {
    "path": "Decode the Message/kata.go",
    "content": "package Decode_the_Message\n\nfunc decodeMessage(key string, message string) string {\n\n\tdecoderTable := map[rune]rune{}\n\n\tj := rune(97)\n\n\tfor _, char := range key {\n\t\tif char == 32 {\n\t\t\tcontinue\n\t\t}\n\n\t\t_, ok := decoderTable[char]\n\t\tif !ok {\n\t\t\tdecoderTable[char] = j\n\t\t\tj++\n\t\t}\n\t}\n\n\tdecodedMessage := make([]rune, len(message))\n\tfor i, char := range message {\n\t\tif char == 32 {\n\t\t\tdecodedMessage[i] = char\n\t\t} else {\n\t\t\tdecodedMessage[i] = decoderTable[char]\n\t\t}\n\t}\n\n\treturn string(decodedMessage)\n}\n"
  },
  {
    "path": "Decompress Run-Length Encoded List/kata.go",
    "content": "package kata\n\nfunc decompressRLElist(nums []int) []int {\n\tvalues := make([]int, 0, len(nums)/2)\n\tfor i := 0; i < len(nums); i = i + 2 {\n\t\tfor j := 0; j < nums[i]; j++ {\n\t\t\tvalues = append(values, nums[i+1])\n\t\t}\n\t}\n\treturn values\n}\n"
  },
  {
    "path": "Decrypt String from Alphabet to Integer Mapping/kata.go",
    "content": "package kata\n\nfunc freqAlphabets(s string) string {\n\n\tts := make([]byte, 0, len(s)/3*2)\n\n\tfor i := len(s) - 1; i >= 0; i-- {\n\t\tif s[i] == '#' {\n\t\t\ti--\n\t\t\tk := i\n\t\t\ti--\n\t\t\tj := i\n\t\t\tts = append(ts, hashDecoder[s[j]][s[k]])\n\t\t} else {\n\t\t\tts = append(ts, numberDecoder[s[i]])\n\t\t}\n\t}\n\n\tk := 0\n\tfor i := len(ts) - 1; i >= (len(ts) / 2); i-- {\n\t\tts[i], ts[k] = ts[k], ts[i]\n\t\tk++\n\t}\n\n\treturn string(ts)\n}\n\nvar numberDecoder map[byte]byte = map[byte]byte{'1': 'a', '2': 'b', '3': 'c', '4': 'd', '5': 'e', '6': 'f', '7': 'g', '8': 'h', '9': 'i'}\n\nvar hashDecoder map[byte]map[byte]byte = map[byte]map[byte]byte{\n\t'1': {'0': 'j', '1': 'k', '2': 'l', '3': 'm', '4': 'n', '5': 'o', '6': 'p', '7': 'q', '8': 'r', '9': 's'},\n\t'2': {'0': 't', '1': 'u', '2': 'v', '3': 'w', '4': 'x', '5': 'y', '6': 'z'},\n}\n"
  },
  {
    "path": "Deepest Leaves Sum/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc deepestLeavesSum(root *TreeNode) int {\n\tmaxHeight := 0\n\tcurrentHeight := 0\n\tmaxHeight = getHeight(root, maxHeight)\n\treturn sum(root, maxHeight, currentHeight)\n}\n\nfunc sum(node *TreeNode, maxHeight int, currentHeight int) int {\n\n\tcurrentHeight++\n\n\tif currentHeight == maxHeight {\n\t\treturn node.Val\n\t}\n\n\tvar s int\n\tif node.Left != nil {\n\t\ts += sum(node.Left, maxHeight, currentHeight)\n\t}\n\n\tif node.Right != nil {\n\t\ts += sum(node.Right, maxHeight, currentHeight)\n\t}\n\n\treturn s\n}\n\nfunc getHeight(node *TreeNode, h int) int {\n\th++\n\n\tif node.Left == nil && node.Right == nil {\n\t\treturn h\n\t}\n\n\tvar leftHeight int\n\tif node.Left != nil {\n\t\tleftHeight = getHeight(node.Left, h)\n\t}\n\n\tvar rightHeight int\n\tif node.Right != nil {\n\t\trightHeight = getHeight(node.Right, h)\n\t}\n\n\tif leftHeight > rightHeight {\n\t\treturn leftHeight\n\t}\n\n\treturn rightHeight\n}\n"
  },
  {
    "path": "Defanging an IP Address/kata.go",
    "content": "package kata\n\nfunc defangIPaddr(address string) string {\n\tdefangAddress := make([]rune, 0, len(address)+6)\n\tfor _, char := range address {\n\t\tif char == '.' {\n\t\t\tdefangAddress = append(defangAddress, '[', '.', ']')\n\t\t\tcontinue\n\t\t}\n\t\tdefangAddress = append(defangAddress, char)\n\t}\n\treturn string(defangAddress)\n}\n"
  },
  {
    "path": "Delete Characters to Make Fancy String/kata.go",
    "content": "package Delete_Characters_to_Make_Fancy_String\n\nfunc makeFancyString(s string) string {\n\tc := 1\n\tchar := s[0]\n\tb := make([]byte, 0)\n\tb = append(b, s[0])\n\tfor i := 1; i < len(s); i++ {\n\t\tif s[i] == char {\n\t\t\tc++\n\t\t\tif c > 2 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t} else {\n\t\t\tc = 1\n\t\t\tchar = s[i]\n\t\t}\n\t\tb = append(b, s[i])\n\t}\n\treturn string(b)\n}\n"
  },
  {
    "path": "Delete Duplicate Emails/kata.sql",
    "content": "package kata\n\nDELETE p1 FROM Person p1\nINNER JOIN Person p2\nWHERE\n    p1.id > p2.id AND \n    p1.email = p2.email;\n"
  },
  {
    "path": "Delete Greatest Value in Each Row/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc deleteGreatestValue(grid [][]int) int {\n\tfor i := 0; i < len(grid); i++ {\n\t\tsort.Ints(grid[i])\n\t}\n\n\tvar sum int\n\tfor i := 0; i < len(grid[0]); i++ {\n\t\tvar max int\n\t\tfor j := len(grid) - 1; j >= 0; j-- {\n\t\t\tif max < grid[j][i] {\n\t\t\t\tmax = grid[j][i]\n\t\t\t}\n\t\t}\n\t\tsum += max\n\t}\n\treturn sum\n}\n"
  },
  {
    "path": "Delete Leaves With a Given Value/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc removeLeafNodes(root *TreeNode, target int) *TreeNode {\n\tfor {\n\t\tok := removeLeafNode(nil, root, target, RootNodeType)\n\t\tif !ok {\n\t\t\tif root.Right == nil && root.Left == nil && root.Val == target {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn root\n\t\t}\n\t}\n}\n\ntype NodeType int\n\nconst (\n\tRootNodeType  NodeType = 0\n\tLeftNodeType  NodeType = 1\n\tRightNodeType NodeType = 2\n)\n\nfunc removeLeafNode(parentNode *TreeNode, node *TreeNode, target int, nodeType NodeType) bool {\n\tif node.Right == nil && node.Left == nil && node.Val == target && parentNode != nil {\n\t\tif nodeType == LeftNodeType {\n\t\t\tparentNode.Left = nil\n\t\t} else {\n\t\t\tparentNode.Right = nil\n\t\t}\n\t\treturn true\n\t}\n\n\tvar left bool\n\tif node.Left != nil {\n\t\tleft = removeLeafNode(node, node.Left, target, LeftNodeType)\n\t}\n\tvar right bool\n\tif node.Right != nil {\n\t\tright = removeLeafNode(node, node.Right, target, RightNodeType)\n\t}\n\treturn right == true || left == true\n}\n"
  },
  {
    "path": "Delete Node in a Linked List/kata.go",
    "content": "package Delete_Node_in_a_Linked_List\n\ntype ListNode struct {\n\tVal  int\n\tNext *ListNode\n}\n\nfunc deleteNode(node *ListNode) {\n\t*node = *node.Next\n}\n"
  },
  {
    "path": "Delete the Middle Node of a Linked List/kata.go",
    "content": "package Delete_the_Middle_Node_of_a_Linked_List\n\ntype ListNode struct {\n\tVal  int\n\tNext *ListNode\n}\n\nfunc deleteMiddle(head *ListNode) *ListNode {\n\n\tif head.Next == nil {\n\t\treturn nil\n\t}\n\n\tc := 0\n\tcurrentNode := head\n\tfor currentNode != nil {\n\t\tc++\n\t\tcurrentNode = currentNode.Next\n\t}\n\n\tvar previousNode *ListNode\n\tcurrentNode = head\n\tfor i := 0; i < c/2; i++ {\n\t\tpreviousNode = currentNode\n\t\tcurrentNode = currentNode.Next\n\t}\n\n\tif currentNode.Next == nil {\n\t\tpreviousNode.Next = nil\n\t} else {\n\t\t*currentNode = *currentNode.Next\n\t}\n\n\treturn head\n}\n"
  },
  {
    "path": "Design Add and Search Words Data Structure/kata.go",
    "content": "package Design_Add_and_Search_Words_Data_Structure\n\ntype node struct {\n\tword  bool\n\tnodes [26]*node\n}\n\ntype WordDictionary struct {\n\trootNode *node\n}\n\nfunc Constructor() WordDictionary {\n\treturn WordDictionary{\n\t\trootNode: &node{nodes: [26]*node{}},\n\t}\n}\n\nfunc (this *WordDictionary) AddWord(word string) {\n\tcurrentNode := this.rootNode\n\tfor i, char := range word {\n\t\tn := currentNode.nodes[int(char)-97]\n\t\tif n == nil {\n\t\t\tcurrentNode.nodes[int(char)-97] = &node{nodes: [26]*node{}, word: (len(word) - 1) == i}\n\t\t\tn = currentNode.nodes[int(char)-97]\n\t\t}\n\t\tcurrentNode = n\n\t}\n}\n\nfunc (this *WordDictionary) Search(word string) bool {\n\treturn searchInNode(this.rootNode, word)\n}\n\nfunc searchInNode(rootNode *node, word string) bool {\n\tcurrentNode := rootNode\n\tfor i, char := range word {\n\t\tif char == '.' {\n\t\t\tfor _, n := range currentNode.nodes {\n\t\t\t\tif n == nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tif (len(word)-1) == i && n.word {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tok := searchInNode(n, word[i+1:])\n\t\t\t\tif ok {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t} else {\n\t\t\tn := currentNode.nodes[int(char)-97]\n\t\t\tif n == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif (len(word)-1) == i && n.word {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tcurrentNode = n\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "Design HashMap/kata.go",
    "content": "package kata\n\nimport \"container/list\"\n\ntype HashMapValue struct {\n\tkey   int\n\tvalue int\n}\n\ntype MyHashMap struct {\n\tbuckets []*list.List\n}\n\n/** Initialize your data structure here. */\nfunc Constructor() MyHashMap {\n\tbuckets := make([]*list.List, 500)\n\tfor i := range buckets {\n\t\tbuckets[i] = list.New()\n\t}\n\treturn MyHashMap{\n\t\tbuckets: buckets,\n\t}\n}\n\nfunc (this *MyHashMap) Put(key int, value int) {\n\tidx := key % 500\n\tfor e := this.buckets[idx].Front(); e != nil; e = e.Next() {\n\t\tif e.Value.(*HashMapValue).key == key {\n\t\t\te.Value.(*HashMapValue).value = value\n\t\t\treturn\n\t\t}\n\t}\n\tthis.buckets[idx].PushFront(&HashMapValue{key: key, value: value})\n}\n\n/** Returns the value to which the specified key is mapped, or -1 if this map contains no mapping for the key */\nfunc (this *MyHashMap) Get(key int) int {\n\tidx := key % 500\n\tfor e := this.buckets[idx].Front(); e != nil; e = e.Next() {\n\t\tif e.Value.(*HashMapValue).key == key {\n\t\t\treturn e.Value.(*HashMapValue).value\n\t\t}\n\t}\n\treturn -1\n}\n\n/** Removes the mapping of the specified value key if this map contains a mapping for the key */\nfunc (this *MyHashMap) Remove(key int) {\n\tidx := key % 500\n\tfor e := this.buckets[idx].Front(); e != nil; e = e.Next() {\n\t\tif e.Value.(*HashMapValue).key == key {\n\t\t\tthis.buckets[idx].Remove(e)\n\t\t}\n\t}\n}\n\n/**\n * Your MyHashMap object will be instantiated and called as such:\n * obj := Constructor();\n * obj.Put(key,value);\n * param_2 := obj.Get(key);\n * obj.Remove(key);\n */\n"
  },
  {
    "path": "Design HashSet/kata.go",
    "content": "package kata\n\nimport (\n\t\"container/list\"\n)\n\ntype MyHashSet struct {\n\tbuckets []*list.List\n}\n\n/** Initialize your data structure here. */\nfunc Constructor() MyHashSet {\n\tbuckets := make([]*list.List, 500)\n\tfor i := range buckets {\n\t\tbuckets[i] = list.New()\n\t}\n\treturn MyHashSet{\n\t\tbuckets: buckets,\n\t}\n}\n\nfunc (this *MyHashSet) Add(key int) {\n\tidx := key % 500\n\tfor e := this.buckets[idx].Front(); e != nil; e = e.Next() {\n\t\tif e.Value.(int) == key {\n\t\t\treturn\n\t\t}\n\t}\n\tthis.buckets[idx].PushFront(key)\n}\n\nfunc (this *MyHashSet) Remove(key int) {\n\tidx := key % 500\n\tfor e := this.buckets[idx].Front(); e != nil; e = e.Next() {\n\t\tif e.Value.(int) == key {\n\t\t\tthis.buckets[idx].Remove(e)\n\t\t}\n\t}\n}\n\n/** Returns true if this set contains the specified element */\nfunc (this *MyHashSet) Contains(key int) bool {\n\tidx := key % 500\n\tfor e := this.buckets[idx].Front(); e != nil; e = e.Next() {\n\t\tif e.Value.(int) == key {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n/**\n * Your MyHashSet object will be instantiated and called as such:\n * obj := Constructor();\n * obj.Add(key);\n * obj.Remove(key);\n * param_3 := obj.Contains(key);\n */\n"
  },
  {
    "path": "Design Linked List/kata_test.go",
    "content": "package Design_Linked_List\n\ntype Node struct {\n\tval  int\n\tnext *Node\n}\n\ntype MyLinkedList struct {\n\trootNode *Node\n\tlenght   int\n}\n\nfunc Constructor() MyLinkedList {\n\treturn MyLinkedList{}\n}\n\nfunc (this *MyLinkedList) Get(index int) int {\n\tif index < 0 || index > this.lenght {\n\t\treturn -1\n\t}\n\n\tvar i int\n\tcurrentNode := this.rootNode\n\tfor currentNode != nil {\n\t\tif index == i {\n\t\t\treturn currentNode.val\n\t\t}\n\t\tcurrentNode = currentNode.next\n\t\ti++\n\t}\n\n\treturn -1\n}\n\nfunc (this *MyLinkedList) AddAtHead(val int) {\n\tthis.lenght++\n\tnextNode := this.rootNode\n\tthis.rootNode = &Node{\n\t\tval:  val,\n\t\tnext: nextNode,\n\t}\n}\n\nfunc (this *MyLinkedList) AddAtTail(val int) {\n\tif this.rootNode == nil {\n\t\tthis.AddAtHead(val)\n\t\treturn\n\t}\n\n\tcurrentNode := this.rootNode\n\tfor currentNode != nil {\n\t\tif currentNode.next != nil {\n\t\t\tcurrentNode = currentNode.next\n\t\t\tcontinue\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\tcurrentNode.next = &Node{val: val}\n\tthis.lenght++\n}\n\nfunc (this *MyLinkedList) AddAtIndex(index int, val int) {\n\n\tif index == 0 {\n\t\tthis.AddAtHead(val)\n\t\treturn\n\t}\n\n\tif this.rootNode == nil {\n\t\treturn\n\t}\n\n\tcurrentNode := this.rootNode\n\tvar i int\n\tfor currentNode != nil {\n\t\tif index-1 == i {\n\t\t\tbreak\n\t\t} else if currentNode.next != nil {\n\t\t\tcurrentNode = currentNode.next\n\t\t\ti++\n\t\t\tcontinue\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tnextNode := currentNode.next\n\tcurrentNode.next = &Node{\n\t\tval:  val,\n\t\tnext: nextNode,\n\t}\n\tthis.lenght++\n}\n\nfunc (this *MyLinkedList) DeleteAtIndex(index int) {\n\tif index < 0 || index > this.lenght {\n\t\treturn\n\t}\n\n\tif this.lenght == 0 {\n\t\treturn\n\t}\n\n\tif index == 0 {\n\t\tthis.rootNode = this.rootNode.next\n\t\tthis.lenght--\n\t\treturn\n\t}\n\n\tcurrentNode := this.rootNode\n\tvar i int\n\tfor currentNode != nil {\n\t\tif currentNode.next != nil {\n\t\t\tpreviousNode := currentNode\n\t\t\ti++\n\t\t\tif i == index {\n\t\t\t\tpreviousNode.next = currentNode.next.next\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcurrentNode = currentNode.next\n\t\t\tcontinue\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tthis.lenght--\n\n\treturn\n}\n\n/**\n * Your MyLinkedList object will be instantiated and called as such:\n * obj := Constructor();\n * param_1 := obj.Get(index);\n * obj.AddAtHead(val);\n * obj.AddAtTail(val);\n * obj.AddAtIndex(index,val);\n * obj.DeleteAtIndex(index);\n */\n"
  },
  {
    "path": "Design Parking System/kata.go",
    "content": "package kata\n\ntype ParkingSystem struct {\n\tbig, medium, small int\n}\n\nfunc Constructor(big int, medium int, small int) ParkingSystem {\n\treturn ParkingSystem{\n\t\tbig:    big,\n\t\tmedium: medium,\n\t\tsmall:  small,\n\t}\n}\n\nconst (\n\t_ = iota\n\tCarTypeBig\n\tCarTypeMedium\n\tCarTypeSmall\n)\n\nfunc (ps *ParkingSystem) AddCar(carType int) bool {\n\tvar found bool\n\tif carType == CarTypeSmall {\n\t\tif ps.small > 0 {\n\t\t\tfound = true\n\t\t\tps.small--\n\t\t}\n\t} else if carType == CarTypeMedium {\n\t\tif ps.medium > 0 {\n\t\t\tfound = true\n\t\t\tps.medium--\n\t\t}\n\t} else if carType == CarTypeBig {\n\t\tif ps.big > 0 {\n\t\t\tfound = true\n\t\t\tps.big--\n\t\t}\n\t}\n\n\treturn found\n}\n\n/**\n * Your ParkingSystem object will be instantiated and called as such:\n * obj := Constructor(big, medium, small);\n * param_1 := obj.AddCar(carType);\n */\n"
  },
  {
    "path": "Design a Stack With Increment Operation/kata.go",
    "content": "package kata\n\ntype CustomStack struct {\n\telements []int\n\tmaxSize  int\n}\n\nfunc Constructor(maxSize int) CustomStack {\n\treturn CustomStack{\n\t\telements: make([]int, 0),\n\t\tmaxSize:  maxSize,\n\t}\n}\n\nfunc (this *CustomStack) Push(x int) {\n\n\tif len(this.elements) >= this.maxSize {\n\t\treturn\n\t}\n\n\tthis.elements = append(this.elements, x)\n}\n\nfunc (this *CustomStack) Pop() int {\n\tif len(this.elements) == 0 {\n\t\treturn -1\n\t}\n\n\tx := this.elements[len(this.elements)-1]\n\tthis.elements = this.elements[:len(this.elements)-1]\n\n\treturn x\n}\n\nfunc (this *CustomStack) Increment(k int, val int) {\n\n\tif k >= len(this.elements) {\n\t\tk = len(this.elements)\n\t}\n\n\tfor i := 0; i < k; i++ {\n\t\tthis.elements[i] += val\n\t}\n}\n\n/**\n * Your CustomStack object will be instantiated and called as such:\n * obj := Constructor(maxSize);\n * obj.Push(x);\n * param_2 := obj.Pop();\n * obj.Increment(k,val);\n */\n"
  },
  {
    "path": "Design an Ordered Stream/kata.go",
    "content": "package Design_an_Ordered_Stream\n\ntype OrderedStream struct {\n\tvalues       []*string\n\tcurrentIndex int\n}\n\nfunc Constructor(n int) OrderedStream {\n\treturn OrderedStream{values: make([]*string, n)}\n}\n\nfunc (this *OrderedStream) Insert(idKey int, value string) []string {\n\tif this.values[idKey-1] == nil {\n\t\tthis.values[idKey-1] = new(string)\n\t\t*this.values[idKey-1] = value\n\t} else {\n\t\t*this.values[idKey-1] = value\n\t}\n\n\trightValues := make([]string, 0)\n\tfor this.currentIndex < len(this.values) {\n\t\tif this.values[this.currentIndex] == nil {\n\t\t\tbreak\n\t\t}\n\t\trightValues = append(rightValues, *this.values[this.currentIndex])\n\t\tthis.currentIndex++\n\t}\n\treturn rightValues\n}\n"
  },
  {
    "path": "Destination City/kata.go",
    "content": "package kata\n\nfunc destCity(paths [][]string) string {\n\tstart := make(map[string]bool)\n\n\tfor _, v := range paths {\n\t\tstart[v[0]] = true\n\t}\n\n\tvar lastV string\n\tfor _, v := range paths {\n\t\tif !start[v[1]] {\n\t\t\tlastV = v[1]\n\t\t\tbreak\n\t\t}\n\t}\n\treturn lastV\n}\n"
  },
  {
    "path": "Detect Capital/kata.go",
    "content": "package kata\n\nfunc detectCapitalUse(word string) bool {\n\tvar capitals int\n\tvar lowers int\n\tfor i := 0; i < len(word); i++ {\n\t\tif word[i] >= 65 && word[i] <= 90 {\n\t\t\tcapitals++\n\t\t\tif capitals == 2 && lowers >= 1 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tlowers++\n\t\t}\n\t}\n\n\tif capitals == 0 || capitals == len(word) || (capitals == 1 && (word[0] >= 65 && word[0] <= 90)) {\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "Determine Color of a Chessboard Square/kata.go",
    "content": "package kata\n\nfunc squareIsWhite(coordinates string) bool {\n\ta := int(coordinates[0]) - 96\n\tb := int(coordinates[1]) - 48\n\tif a%2 == 1 {\n\t\tif b%2 == 0 {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\tif b%2 == 0 {\n\t\t\treturn false\n\t\t} else {\n\t\t\treturn true\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Determine if String Halves Are Alike/kata.go",
    "content": "package kata\n\nfunc halvesAreAlike(s string) bool {\n\taCount := count(s[len(s)/2:])\n\tbCount := count(s[:len(s)/2])\n\n\tif aCount != bCount {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\nfunc count(a string) int {\n\taCount := 0\n\tfor i := 0; i < len(a); i++ {\n\t\tswitch a[i] {\n\t\tcase 'A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u':\n\t\t\taCount += 1\n\t\t}\n\t}\n\treturn aCount\n}\n"
  },
  {
    "path": "Determine if Two Events Have Conflict/kata.java",
    "content": "import java.time.LocalTime;\n\nclass Solution {\n    public boolean haveConflict(String[] event1, String[] event2) {\n        var eventAStart = LocalTime.parse(event1[0]);\n        var eventAEnd = LocalTime.parse(event1[1]);\n        var eventBStart = LocalTime.parse(event2[0]);\n        var eventBEnd = LocalTime.parse(event2[1]);\n\n        return eventAEnd.equals(eventBStart)\n        || (eventAStart.equals(eventBEnd))\n        || (eventBStart.isAfter(eventAStart) && eventBStart.isBefore(eventAEnd))\n        || (eventBEnd.isAfter(eventAStart) && eventBEnd.isBefore(eventAEnd))\n        || (eventAStart.isAfter(eventBStart) && eventAStart.isBefore(eventBEnd))\n        || (eventAEnd.isAfter(eventBStart) && eventAEnd.isBefore(eventBEnd));\n    }\n}"
  },
  {
    "path": "Diet Plan Performance/kata.java",
    "content": "class Solution {\n    public int dietPlanPerformance(int[] calories, int k, int lower, int upper) {\n        var gained = 0;\n        var lost = 0;\n\n        var partialSum = 0;\n        var count = 0;\n        for (var i = 0; i < calories.length; i++) {\n            partialSum += calories[i];\n            count++;\n            if (count == k) {\n                if (partialSum < lower) {\n                    lost++;\n                } else if (partialSum > upper) {\n                    gained++;\n                }\n                partialSum = partialSum - calories[i-k+1];\n                count--;\n            }\n        }\n\n        return gained-lost;\n    }\n}"
  },
  {
    "path": "Difference Between Element Sum and Digit Sum of an Array/kata.java",
    "content": "class Solution {\n    public int differenceOfSum(int[] nums) {\n        var elementSum = 0;\n        var digitSum = 0;\n        for (var num : nums) {\n            elementSum += num;\n            while (num != 0) {\n                var digit = num % 10;\n                num = num / 10;\n                digitSum += digit;\n            }\n\n        }\n\n        return (int) Math.abs((double) elementSum-digitSum);\n    }\n}"
  },
  {
    "path": "Display the First Three Rows/kata.py",
    "content": "import pandas as pd\n\ndef selectFirstRows(employees: pd.DataFrame) -> pd.DataFrame:\n    return employees.iloc[:3]"
  },
  {
    "path": "Distinct Numbers in Each Subarray/kata.java",
    "content": "class Solution {\n    public int[] distinctNumbers(int[] nums, int k) {\n        var ans = new int[nums.length-k+1];\n        var count = 0;\n        var j = 0;\n        Map<Integer, Integer> unique = new HashMap<>();\n        for (var i = 0; i < nums.length; i++) {\n            unique.put(nums[i], unique.getOrDefault(nums[i], 0)+1);\n            count++;\n            if (count == k) {\n                ans[j] = unique.size();\n                var n = nums[i-(k-1)];\n                var c  = unique.get(n);\n                if (c > 1) {\n                    c--;\n                    unique.put(n, c);\n                } else if (c == 1) {\n                    unique.remove(n);\n                }\n                count--;\n                j++;\n            }\n        }\n        return ans;\n    }\n}"
  },
  {
    "path": "Distribute Candies to People/kata.go",
    "content": "package kata\n\nfunc distributeCandies(candies int, num_people int) []int {\n\tpeople := make([]int, num_people)\n\tcd := 1\n\tvar i int\n\tfor candies > 0 {\n\t\tif i == len(people) {\n\t\t\ti = 0\n\t\t}\n\n\t\tif candies <= cd {\n\t\t\tcd = candies\n\t\t}\n\n\t\tpeople[i] += cd\n\t\tcandies = candies - cd\n\t\tcd++\n\t\ti++\n\t}\n\n\treturn people\n}\n"
  },
  {
    "path": "Distribute Elements Into Two Arrays I/kata.go",
    "content": "package kata\n\nfunc resultArray(nums []int) []int {\n\tvar a, b = make([]int, 0), make([]int, 0)\n\n\ta = append(a, nums[0])\n\tb = append(b, nums[1])\n\n\tfor i := 2; i < len(nums); i++ {\n\t\tif a[len(a)-1] > b[len(b)-1] {\n\t\t\ta = append(a, nums[i])\n\t\t} else {\n\t\t\tb = append(b, nums[i])\n\t\t}\n\t}\n\n\tfor _, ib := range b {\n\t\ta = append(a, ib)\n\t}\n\n\treturn a\n}\n"
  },
  {
    "path": "Divide Array Into Equal Pairs/kata.go",
    "content": "package Divide_Array_Into_Equal_Pairs\n\nimport \"sort\"\n\nfunc divideArray(nums []int) bool {\n\tsort.Ints(nums)\n\n\tfor i := 1; i < len(nums); i = i + 2 {\n\t\tif nums[i] != nums[i-1] {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "Divide a String Into Groups of Size k/kata.go",
    "content": "package Divide_a_String_Into_Groups_of_Size_k\n\nfunc divideString(s string, k int, fill byte) []string {\n\n\tres := make([]string, 0)\n\tif k > len(s) {\n\t\tm := len(s)\n\t\tfor l := 0; l < k-m; l++ {\n\t\t\ts += string(fill)\n\t\t}\n\t\tres = append(res, s)\n\t\treturn res\n\t}\n\n\tj := 0\n\ti := k\n\tfor i <= len(s) {\n\t\tres = append(res, s[j:i])\n\t\tj = i\n\t\ti = i + k\n\t\tif i > len(s) && len(s[j:]) > 0 {\n\t\t\tb := make([]byte, 0)\n\t\t\tb = append(b, s[j:]...)\n\t\t\tm := len(b)\n\t\t\tfor l := 0; l < k-m; l++ {\n\t\t\t\tb = append(b, fill)\n\t\t\t}\n\t\t\tres = append(res, string(b))\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn res\n}\n"
  },
  {
    "path": "Divisible and Non-divisible Sums Difference/kata.go",
    "content": "package main\n\nfunc differenceOfSums(n int, m int) int {\n\tvar sumDivisible, sumNotDivisible = 0, 0\n\tfor num := 1; num <= n; num++ {\n\t\tif num%m == 0 {\n\t\t\tsumDivisible += num\n\t\t}\n\t\tif num%m != 0 {\n\t\t\tsumNotDivisible += num\n\t\t}\n\t}\n\treturn sumNotDivisible - sumDivisible\n}\n"
  },
  {
    "path": "Dot Product of Two Sparse Vectors/kata.go",
    "content": "package Dot_Product_of_Two_Sparse_Vectors\n\ntype SparseVector struct {\n\tValues map[int]int\n}\n\nfunc Constructor(nums []int) SparseVector {\n\tv := make(map[int]int)\n\tfor i, n := range nums {\n\t\tv[i] = n\n\t}\n\treturn SparseVector{\n\t\tValues: v,\n\t}\n}\n\n// Return the dotProduct of two sparse vectors\nfunc (this *SparseVector) dotProduct(vec SparseVector) int {\n\tvar sum int\n\tfor i, num := range vec.Values {\n\t\tsum += this.Values[i] * num\n\t}\n\treturn sum\n}\n\n/**\n * Your SparseVector object will be instantiated and called as such:\n * v1 := Constructor(nums1);\n * v2 := Constructor(nums2);\n * ans := v1.dotProduct(v2);\n */\n"
  },
  {
    "path": "Drop Duplicate Rows/kata.py",
    "content": "import pandas as pd\n\ndef dropDuplicateEmails(customers: pd.DataFrame) -> pd.DataFrame:\n    customers = customers.drop_duplicates(subset=['email'])\n    return customers"
  },
  {
    "path": "Drop Missing Data/kata.py",
    "content": "import pandas as pd\n\ndef dropMissingData(students: pd.DataFrame) -> pd.DataFrame:\n    students = students.dropna(subset=['name'])\n    return students"
  },
  {
    "path": "Duplicate Emails/kata.sql",
    "content": "package kata\n\nSELECT DISTINCT(email) FROM Person GROUP BY email HAVING count(email) > 1\n"
  },
  {
    "path": "Duplicate Zeros/kata.go",
    "content": "package kata\n\nfunc duplicateZeros(arr []int) {\n\tfor i := 0; i < len(arr); i++ {\n\t\tif arr[i] == 0 {\n\t\t\tk := 0\n\t\t\tfor j := i + 1; j < len(arr); j++ {\n\t\t\t\tl := arr[j]\n\t\t\t\tarr[j] = k\n\t\t\t\tk = l\n\t\t\t}\n\t\t\ti++\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Element Appearing More Than 25% In Sorted Array/kata.go",
    "content": "package kata\n\nfunc findSpecialInteger(arr []int) int {\n\tcounter := make(map[int]int)\n\tfragment := float64(len(arr)) / 100 * 25\n\tfor _, n := range arr {\n\t\tcounter[n]++\n\t}\n\tvar match int\n\tmax := -1\n\tfor number, count := range counter {\n\t\tif float64(count) >= fragment && (max == -1 || max < count) {\n\t\t\tmatch = number\n\t\t\tmax = count\n\t\t}\n\t}\n\treturn match\n}\n"
  },
  {
    "path": "Employee Bonus/q.sql",
    "content": "SELECT e.name, b.bonus\nFROM Employee AS e LEFT JOIN Bonus AS b ON e.empId = b.empId WHERE b.bonus < 1000 OR b.bonus IS NULL;\n"
  },
  {
    "path": "Employee Importance/kata.py",
    "content": "package kata\n\n\"\"\"\n# Employee info\nclass Employee:\n    def __init__(self, id: int, importance: int, subordinates: List[int]):\n        # It's the unique id of each node.\n        # unique id of this employee\n        self.id = id\n        # the importance value of this employee\n        self.importance = importance\n        # the id of direct subordinates\n        self.subordinates = subordinates\n\"\"\"\n\nclass Solution:\n    def getImportance(self, employees: List['Employee'], id: int) -> int:\n        \n        employeesResolver = {}\n        for employee in employees:\n            employeesResolver[employee.id] = employee\n        \n        employee = employeesResolver[id]\n        \n        return self.getSubImportance(employeesResolver, employee)\n        \n    def getSubImportance(self, employees, employee) -> int:\n        sum = employee.importance\n          \n        for subEmployeeID in employee.subordinates:\n            sum = sum + employees[subEmployeeID].importance\n            if employees[subEmployeeID].subordinates:\n                for subSubEmployeeID in employees[subEmployeeID].subordinates:\n                    sum = sum + self.getSubImportance(employees, employees[subSubEmployeeID])\n        return sum        \n"
  },
  {
    "path": "Employees Earning More Than Their Managers/kata.sql",
    "content": "package kata\n\nselect Name as Employee from Employee as e where Salary > (select Salary from Employee as ie where ie.Id = e.ManagerId)\n"
  },
  {
    "path": "Employees With Missing Information/q.sql",
    "content": "(SELECT e.employee_id\n FROM Employees AS e\n          LEFT JOIN Salaries AS s ON s.employee_id=e.employee_id\n WHERE salary IS NULL)\nUNION\n(SELECT s.employee_id\n FROM Salaries AS s\n          LEFT JOIN Employees AS e ON s.employee_id=e.employee_id\n WHERE name IS NULL)\nORDER BY employee_id"
  },
  {
    "path": "Encode and Decode TinyURL/kata.go",
    "content": "package kata\n\nimport (\n\t\"math/rand\"\n\t\"time\"\n)\n\ntype Codec struct {\n\turlContainer map[string]string\n}\n\nfunc Constructor() Codec {\n\treturn Codec{\n\t\turlContainer: make(map[string]string),\n\t}\n}\n\n// Encodes a URL to a shortened URL.\nfunc (c *Codec) encode(longURL string) string {\n\tv := genID(5)\n\turl := \"http://tinyurl.com/\" + v\n\tc.urlContainer[url] = longURL\n\treturn url\n}\n\n// Decodes a shortened URL to its original URL.\nfunc (c *Codec) decode(shortUrl string) string {\n\treturn c.urlContainer[shortUrl]\n}\n\nconst charset = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\"\n\nvar seededRand *rand.Rand = rand.New(\n\trand.NewSource(time.Now().UnixNano()))\n\nfunc genID(length int) string {\n\tb := make([]byte, length)\n\tfor i := range b {\n\t\tb[i] = charset[seededRand.Intn(len(charset))]\n\t}\n\treturn string(b)\n}\n"
  },
  {
    "path": "Equal Row and Column Pairs/kata.go",
    "content": "package kata\n\nimport (\n\t\"crypto/md5\"\n\t\"encoding/hex\"\n\t\"strconv\"\n)\n\nfunc equalPairs(grid [][]int) int {\n\n\ttype pair struct {\n\t\tA, B int\n\t}\n\n\tmatcher := make(map[string]pair)\n\tfor i := 0; i < len(grid); i++ {\n\t\tk := make([]byte, 0)\n\t\tfor j := 0; j < len(grid[i]); j++ {\n\t\t\tk = append(k, []byte(strconv.Itoa(grid[i][j]))...)\n\t\t\tk = append(k, byte(','))\n\t\t}\n\n\t\th := md5.Sum(k)\n\t\ths := hex.EncodeToString(h[:])\n\t\ta := matcher[hs]\n\t\ta.A++\n\t\tmatcher[hs] = a\n\t}\n\n\tvar c int\n\tfor i := 0; i < len(grid[0]); i++ {\n\t\tk := make([]byte, 0)\n\t\tfor j := 0; j < len(grid); j++ {\n\t\t\tk = append(k, []byte(strconv.Itoa(grid[j][i]))...)\n\t\t\tk = append(k, byte(','))\n\t\t}\n\n\t\th := md5.Sum(k)\n\t\ths := hex.EncodeToString(h[:])\n\t\tb := matcher[hs]\n\t\tb.B++\n\t\tmatcher[hs] = b\n\t}\n\n\tfor _, pair := range matcher {\n\t\tc += pair.A * pair.B\n\t}\n\n\treturn c\n}\n"
  },
  {
    "path": "Evaluate Boolean Binary Tree/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc evaluateTree(root *TreeNode) bool {\n\tif root.Left == nil && root.Right == nil {\n\t\tif root.Val == 1 {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\tvar b bool\n\tif root.Left != nil {\n\t\tb = evaluateTree(root.Left)\n\t}\n\tvar a bool\n\tif root.Right != nil {\n\t\ta = evaluateTree(root.Right)\n\t}\n\tif root.Val == 2 {\n\t\treturn a || b\n\t}\n\treturn a && b\n}\n"
  },
  {
    "path": "Evaluate Boolean Expression/q.sql",
    "content": "SELECT\n    left_operand,\n    operator,\n    right_operand,\n    (CASE\n         WHEN operator = \">\" AND v1.value > v2.value THEN \"true\"\n         WHEN operator = \">\" AND v1.value <= v2.value THEN \"false\"\n         WHEN operator = \"=\" AND v1.value = v2.value THEN \"true\"\n         WHEN operator = \"=\" AND v1.value != v2.value THEN \"false\"\n         WHEN operator = \"<\" AND v1.value < v2.value THEN \"true\"\n         WHEN operator = \"<\" AND v1.value >= v2.value THEN \"false\"\n        END) AS value\nFROM Expressions AS e\n    INNER JOIN Variables AS v1 ON v1.name = e.left_operand\n    INNER JOIN Variables AS v2 ON v2.name = e.right_operand;"
  },
  {
    "path": "Evaluate Reverse Polish Notation/kata.go",
    "content": "package kata\n\nimport \"container/list\"\n\nfunc evalRPN(tokens []string) int {\n\tnodes := Parse(tokens)\n\treturn Eval(nodes)\n}\n\nconst (\n\tNumberKind = iota\n\tPlusKind\n\tMinusKind\n\tMultiplyKind\n\tDvisionKind\n)\n\ntype Node struct {\n\tKind  int\n\tValue int\n}\n\nconst (\n\tMultiply byte = 42\n\tDvision  byte = 47\n\tPlus     byte = 43\n\tMinus    byte = 45\n)\n\nfunc Parse(tokens []string) *list.List {\n\n\tnodes := list.New()\n\tfor i := 0; i < len(tokens); i++ {\n\t\tif len(tokens[i]) == 1 && tokens[i][0] == Minus {\n\t\t\tnodes.PushFront(Node{Kind: MinusKind})\n\t\t} else if len(tokens[i]) == 1 && tokens[i][0] == Multiply {\n\t\t\tnodes.PushFront(Node{Kind: MultiplyKind})\n\t\t} else if len(tokens[i]) == 1 && tokens[i][0] == Plus {\n\t\t\tnodes.PushFront(Node{Kind: PlusKind})\n\t\t} else if len(tokens[i]) == 1 && tokens[i][0] == Dvision {\n\t\t\tnodes.PushFront(Node{Kind: DvisionKind})\n\t\t} else if len(tokens[i]) == 1 && tokens[i][0] >= 48 && tokens[i][0] <= 57 {\n\t\t\tn := Node{Kind: NumberKind}\n\t\t\tvar sum int\n\t\t\tsum = int(tokens[i][0]) - 48\n\t\t\tn.Value = sum\n\t\t\tnodes.PushFront(n)\n\t\t} else if len(tokens[i]) == 2 && tokens[i][0] == Minus {\n\t\t\tn := Node{Kind: NumberKind}\n\t\t\tvar sum int\n\t\t\tsum = int(tokens[i][1]) - 48\n\t\t\tn.Value = sum * -1\n\t\t\tnodes.PushFront(n)\n\t\t} else if len(tokens[i]) > 1 && tokens[i][0] >= 48 && tokens[i][0] <= 57 {\n\t\t\tn := Node{Kind: NumberKind}\n\t\t\tvar sum int\n\t\t\tj := len(tokens[i]) - 1\n\t\t\tnorm := 1\n\t\t\tfor j >= 0 {\n\t\t\t\tif tokens[i][j] >= 48 && tokens[i][j] <= 57 {\n\t\t\t\t\tsum += (int(tokens[i][j]) - 48) * norm\n\t\t\t\t\tj--\n\t\t\t\t\tnorm = norm * 10\n\t\t\t\t}\n\t\t\t}\n\t\t\tn.Value = sum\n\t\t\tnodes.PushFront(n)\n\t\t} else if len(tokens[i]) > 2 && tokens[i][0] == Minus {\n\t\t\tn := Node{Kind: NumberKind}\n\t\t\tvar sum int\n\t\t\tj := len(tokens[i]) - 1\n\t\t\tnorm := 1\n\t\t\tfor j >= 1 {\n\t\t\t\tif tokens[i][j] >= 48 && tokens[i][j] <= 57 {\n\t\t\t\t\tsum += (int(tokens[i][j]) - 48) * norm\n\t\t\t\t\tj--\n\t\t\t\t\tnorm = norm * 10\n\t\t\t\t}\n\t\t\t}\n\t\t\tn.Value = sum * -1\n\t\t\tnodes.PushFront(n)\n\t\t}\n\n\t}\n\n\treturn nodes\n}\n\nfunc Eval(nodes *list.List) int {\n\tif nodes.Len() == 0 {\n\t\treturn 0\n\t}\n\n\tfor nodes.Len() != 1 {\n\t\tdoEval(nodes)\n\t}\n\n\tvalue := nodes.Back()\n\tsum := value.Value.(Node).Value\n\treturn sum\n}\n\nfunc doEval(nodes *list.List) {\n\tfor e := nodes.Back(); e != nil; e = e.Prev() {\n\t\tnode := e.Value.(Node)\n\t\tif node.Kind == MultiplyKind {\n\t\t\teA := e.Next()\n\t\t\tnodeA := eA.Value.(Node)\n\t\t\teb := eA.Next()\n\t\t\tnodeB := eb.Value.(Node)\n\t\t\tsum := nodeB.Value * nodeA.Value\n\n\t\t\tnodes.Remove(eb)\n\t\t\tnodes.Remove(eA)\n\t\t\tnodes.InsertBefore(Node{Kind: NumberKind, Value: sum}, e)\n\t\t\tnodes.Remove(e)\n\t\t\treturn\n\t\t} else if node.Kind == DvisionKind {\n\t\t\teA := e.Next()\n\t\t\tnodeA := eA.Value.(Node)\n\t\t\teB := eA.Next()\n\t\t\tnodeB := eB.Value.(Node)\n\t\t\tsum := nodeB.Value / nodeA.Value\n\n\t\t\tnodes.Remove(eB)\n\t\t\tnodes.Remove(eA)\n\t\t\tnodes.InsertBefore(Node{Kind: NumberKind, Value: sum}, e)\n\t\t\tnodes.Remove(e)\n\t\t\treturn\n\t\t} else if node.Kind == PlusKind {\n\t\t\teA := e.Next()\n\t\t\tnodeA := eA.Value.(Node)\n\t\t\teb := eA.Next()\n\t\t\tnodeB := eb.Value.(Node)\n\t\t\tsum := nodeB.Value + nodeA.Value\n\t\t\tnodes.Remove(eb)\n\t\t\tnodes.Remove(eA)\n\t\t\tnodes.InsertBefore(Node{Kind: NumberKind, Value: sum}, e)\n\t\t\tnodes.Remove(e)\n\t\t\treturn\n\t\t} else if node.Kind == MinusKind {\n\t\t\teA := e.Next()\n\t\t\tnodeA := eA.Value.(Node)\n\t\t\teb := eA.Next()\n\t\t\tnodeB := eb.Value.(Node)\n\t\t\tsum := nodeB.Value - nodeA.Value\n\n\t\t\tnodes.Remove(eb)\n\t\t\tnodes.Remove(eA)\n\t\t\tnodes.InsertBefore(Node{Kind: NumberKind, Value: sum}, e)\n\t\t\tnodes.Remove(e)\n\t\t\treturn\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "Factorial Trailing Zeroes/kata.go",
    "content": "package Factorial_Trailing_Zeroes\n\nimport \"math/big\"\n\nfunc trailingZeroes(n int) int {\n\ts := factorial(big.NewInt(int64(n)))\n\tvar c int\n\tb := s.String()\n\tfor i := len(b) - 1; i > 0; i-- {\n\t\tif b[i] == '0' {\n\t\t\tc++\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn c\n}\n\nfunc init() {\n\tfactorialResults = make(map[string]*big.Int)\n}\n\nvar factorialResults map[string]*big.Int\n\nfunc factorial(n *big.Int) *big.Int {\n\n\tif _, ok := factorialResults[n.String()]; ok {\n\t\treturn factorialResults[n.String()]\n\t}\n\n\tif n.Cmp(big.NewInt(0)) > 0 {\n\t\ty := big.NewInt(0).Mul(n, factorial(big.NewInt(0).Sub(n, big.NewInt(1))))\n\t\tfactorialResults[n.String()] = y\n\t\treturn y\n\t}\n\treturn big.NewInt(1)\n}\n"
  },
  {
    "path": "Fibonacci Number/kata.go",
    "content": "package kata\n\nfunc fib(N int) int {\n\tif N == 0 {\n\t\treturn 0\n\t}\n\tif N == 1 {\n\t\treturn 1\n\t}\n\treturn fib(N-1) + fib(N-2)\n}\n"
  },
  {
    "path": "Fill Missing Data/kata.py",
    "content": "import pandas as pd\n\ndef fillMissingValues(products: pd.DataFrame) -> pd.DataFrame:\n    products['quantity'] = products['quantity'].fillna(0)\n    return products"
  },
  {
    "path": "Filter Elements from Array/kata.ts",
    "content": "type Fn = (n: number, i: number) => any\n\nfunction filter(arr: number[], fn: Fn): number[] {\n    let i = -1;\n    return arr.filter(number => {\n        i++\n        return fn(number, i)\n    })\n};"
  },
  {
    "path": "Filter Restaurants by Vegan-Friendly, Price and Distance/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nconst (\n\tidIndex            int = 0\n\tratingIndex        int = 1\n\tveganFriendlyIndex int = 2\n\tpriceIndex         int = 3\n\tdistanceIndex      int = 4\n)\n\nfunc filterRestaurants(restaurants [][]int, veganFriendly int, maxPrice int, maxDistance int) []int {\n\n\tmatchedRestaurant := make([][]int, 0)\n\tfor i := range restaurants {\n\t\tif veganFriendly != 0 {\n\t\t\tif restaurants[i][veganFriendlyIndex] != veganFriendly {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tif maxPrice < restaurants[i][priceIndex] {\n\t\t\tcontinue\n\t\t}\n\t\tif maxDistance < restaurants[i][distanceIndex] {\n\t\t\tcontinue\n\t\t}\n\t\tmatchedRestaurant = append(matchedRestaurant, restaurants[i])\n\t}\n\n\tsort.Slice(matchedRestaurant, func(i, j int) bool {\n\t\tif matchedRestaurant[i][ratingIndex] == matchedRestaurant[j][ratingIndex] {\n\t\t\treturn matchedRestaurant[i][idIndex] > matchedRestaurant[j][idIndex]\n\t\t}\n\t\treturn matchedRestaurant[i][ratingIndex] > matchedRestaurant[j][ratingIndex]\n\t})\n\n\tids := make([]int, len(matchedRestaurant))\n\tfor i, restaurant := range matchedRestaurant {\n\t\tids[i] = restaurant[idIndex]\n\t}\n\n\treturn ids\n}\n"
  },
  {
    "path": "Final Prices With a Special Discount in a Shop/kata.go",
    "content": "package kata\n\nfunc finalPrices(prices []int) []int {\n\n\tvar i int\n\tfor j := 1; j < len(prices); j++ {\n\t\tif prices[j] <= prices[i] {\n\t\t\tprices[i] = prices[i] - prices[j]\n\t\t\ti++\n\t\t\tj = i\n\t\t} else if j == len(prices)-1 && j-i != 1 {\n\t\t\ti++\n\t\t\tj = i\n\t\t}\n\t}\n\treturn prices\n}\n"
  },
  {
    "path": "Final Value of Variable After Performing Operations/kata.go",
    "content": "package kata\n\nfunc finalValueAfterOperations(operations []string) int {\n\n\tx := 0\n\n\tfor _, operation := range operations {\n\n\t\tif len(operation) != 3 {\n\t\t\tpanic(\"operation invalid\")\n\t\t}\n\n\t\tif operation[0] == '-' {\n\t\t\tif operation[1] == '-' {\n\t\t\t\tif operation[2] == 'X' {\n\t\t\t\t\tx = x - 1\n\t\t\t\t\tcontinue\n\t\t\t\t} else {\n\t\t\t\t\tpanic(\"operation invalid\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tpanic(\"operation invalid\")\n\t\t\t}\n\t\t}\n\n\t\tif operation[0] == '+' {\n\t\t\tif operation[1] == '+' {\n\t\t\t\tif operation[2] == 'X' {\n\t\t\t\t\tx = x + 1\n\t\t\t\t\tcontinue\n\t\t\t\t} else {\n\t\t\t\t\tpanic(\"operation invalid\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tpanic(\"operation invalid\")\n\t\t\t}\n\t\t}\n\n\t\tif operation[0] == 'X' {\n\t\t\tif operation[1] == '+' {\n\t\t\t\tif operation[2] == '+' {\n\t\t\t\t\tx = x + 1\n\t\t\t\t\tcontinue\n\t\t\t\t} else {\n\t\t\t\t\tpanic(\"operation invalid\")\n\t\t\t\t}\n\t\t\t} else if operation[1] == '-' {\n\t\t\t\tif operation[2] == '-' {\n\t\t\t\t\tx = x - 1\n\t\t\t\t\tcontinue\n\t\t\t\t} else {\n\t\t\t\t\tpanic(\"operation invalid\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tpanic(\"operation invalid\")\n\t\t\t}\n\t\t} else {\n\t\t\tpanic(\"operation invalid\")\n\t\t}\n\n\t}\n\n\treturn x\n}\n"
  },
  {
    "path": "Find All Duplicates in an Array/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc findDuplicates(nums []int) []int {\n\tsort.Slice(nums, func(i, j int) bool {\n\t\treturn nums[i] < nums[j]\n\t})\n\n\tvar j int\n\tfor i := 1; i < len(nums); i++ {\n\t\tif nums[i] == nums[i-1] {\n\t\t\tnums[j] = nums[i]\n\t\t\ti++\n\t\t\tj++\n\t\t\tcontinue\n\t\t}\n\t}\n\treturn nums[:j]\n}\n"
  },
  {
    "path": "Find All Lonely Numbers in the Array/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc findLonely(nums []int) []int {\n\tsort.Ints(nums)\n\n\tvar res []int\n\tfor i := 1; i < len(nums); i++ {\n\t\tif check(nums, i) {\n\t\t\tcontinue\n\t\t}\n\t\tres = append(res, nums[i])\n\t}\n\n\tif !check(nums, 0) {\n\t\tres = append(res, nums[0])\n\t}\n\n\treturn res\n}\n\nfunc check(nums []int, i int) bool {\n\tif (i > 0 && nums[i-1] == nums[i]-1) || (i+1 < len(nums) && nums[i+1] == nums[i]+1) || (i > 0 && nums[i-1] == nums[i]) || (i+1 < len(nums) && nums[i+1] == nums[i]) {\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "Find All Numbers Disappeared in an Array/kata.go",
    "content": "package kata\n\nfunc findDisappearedNumbers(nums []int) []int {\n\tb := make([]int, len(nums)+1)\n\tfor i := 0; i < len(nums); i++ {\n\t\tb[nums[i]] = 1\n\t}\n\tc := make([]int, 0)\n\tfor i := 0; i < len(b); i++ {\n\t\tif b[i] == 0 {\n\t\t\tc = append(c, i)\n\t\t}\n\t}\n\treturn c[1:]\n}\n"
  },
  {
    "path": "Find All The Lonely Nodes/kata.java",
    "content": "/**\n * Definition for a binary tree node.\n * public class TreeNode {\n *     int val;\n *     TreeNode left;\n *     TreeNode right;\n *     TreeNode() {}\n *     TreeNode(int val) { this.val = val; }\n *     TreeNode(int val, TreeNode left, TreeNode right) {\n *         this.val = val;\n *         this.left = left;\n *         this.right = right;\n *     }\n * }\n */\nclass Solution {\n    public List<Integer> getLonelyNodes(TreeNode root) {\n         var nodes = new ArrayList<Integer>();\n         if (root == null) {\n             return nodes;\n         }\n\n         countNodes(nodes, root.left, root.right);\n         return nodes;\n    }\n    private void countNodes(ArrayList<Integer> nodes, TreeNode leftNode, TreeNode rightNode) {\n        if (leftNode == null && rightNode == null) {\n            return;\n        } else if (leftNode == null && rightNode != null) {\n            nodes.add(rightNode.val);\n        } else if (leftNode != null && rightNode == null) {\n            nodes.add(leftNode.val);\n        }\n\n        if (leftNode != null) countNodes(nodes, leftNode.left, leftNode.right);\n        if (rightNode != null) countNodes(nodes, rightNode.left, rightNode.right);\n\n        return;\n    }\n}"
  },
  {
    "path": "Find Anagram Mappings/kata.go",
    "content": "package kata\n\nfunc anagramMappings(nums1 []int, nums2 []int) []int {\n\n\tindexLocation := make(map[int]int)\n\tfor i, n := range nums2 {\n\t\tindexLocation[n] = i\n\t}\n\n\tmapping := make([]int, len(nums1))\n\tfor i, n := range nums1 {\n\t\tmapping[i] = indexLocation[n]\n\t}\n\n\treturn mapping\n}\n"
  },
  {
    "path": "Find Bottom Left Tree Value/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\n\ntype leftLeaf struct {\n\tval   int\n\tlevel int\n\tkind  int\n}\n\nfunc findBottomLeftValue(root *TreeNode) int {\n\tleafs := make([]leftLeaf, 0)\n\tfindNodes(root, 0, &leafs, 1)\n\tmax := -1\n\tval := 0\n\tfor i := 0; i < len(leafs); i++ {\n\t\tif max < leafs[i].level && leafs[i].kind == 1 {\n\t\t\tmax = leafs[i].level\n\t\t\tval = leafs[i].val\n\t\t} else if max < leafs[i].level && leafs[i].kind == 2 {\n\t\t\tmax = leafs[i].level\n\t\t\tval = leafs[i].val\n\t\t}\n\t}\n\treturn val\n}\n\nfunc findNodes(node *TreeNode, level int, leafs *[]leftLeaf, kind int) {\n\tif node == nil {\n\t\treturn\n\t}\n\tif node.Left == nil && node.Right == nil {\n\t\t*leafs = append(*leafs, leftLeaf{val: node.Val, kind: kind, level: level})\n\t\treturn\n\t}\n\tlevel = level + 1\n\tif node.Left != nil {\n\t\tfindNodes(node.Left, level, leafs, 1)\n\t}\n\tif node.Right != nil {\n\t\tfindNodes(node.Right, level, leafs, 2)\n\t}\n}\n"
  },
  {
    "path": "Find Center of Star Graph/kata.go",
    "content": "package kata\n\nfunc findCenter(edges [][]int) int {\n\n\tedgesCounter := make(map[int]int)\n\n\tfor _, nodePair := range edges {\n\t\tedgesCounter[nodePair[0]]++\n\t\tedgesCounter[nodePair[1]]++\n\n\t\tif edgesCounter[nodePair[1]] == len(edges) {\n\t\t\treturn nodePair[1]\n\t\t}\n\n\t\tif edgesCounter[nodePair[0]] == len(edges) {\n\t\t\treturn nodePair[0]\n\t\t}\n\t}\n\n\treturn -1\n}\n"
  },
  {
    "path": "Find Closest Number to Zero/kata.go",
    "content": "package Find_Closest_Number_to_Zero\n\nimport (\n\t\"math\"\n\t\"sort\"\n)\n\nfunc findClosestNumber(nums []int) int {\n\n\tsort.Ints(nums)\n\n\tmin := math.MaxInt64\n\tvalue := 0\n\tfor _, n := range nums {\n\t\tnn := int(math.Abs(float64(n)))\n\t\tif nn <= min {\n\t\t\tmin = nn\n\t\t\tvalue = n\n\t\t}\n\t}\n\n\treturn value\n}\n"
  },
  {
    "path": "Find Common Characters/kata.go",
    "content": "package kata\n\nfunc commonChars(words []string) []string {\n\n\tchars := []string{}\n\n\tcounter := make([][26]int, len(words))\n\n\tfor w, word := range words {\n\t\tfor i := 0; i < len(word); i++ {\n\t\t\tcounter[w][word[i]-97]++\n\t\t}\n\t}\n\nouterLoop:\n\tfor j := 0; j < 26; j++ {\n\t\tmin := int(-1)\n\t\tfor i := 0; i < len(words); i++ {\n\t\t\tcounter := int(counter[i][j])\n\t\t\tif counter == 0 {\n\t\t\t\tcontinue outerLoop\n\t\t\t}\n\n\t\t\tif min == -1 || min > counter {\n\t\t\t\tmin = counter\n\t\t\t}\n\t\t}\n\n\t\tfor i := 0; i < min; i++ {\n\t\t\tchars = append(chars, string([]byte{byte(j + 97)}))\n\t\t}\n\n\t}\n\n\treturn chars\n}\n"
  },
  {
    "path": "Find Customer Referee/q.sql",
    "content": "SELECT name FROM Customer AS c WHERE c.referee_id != 2 OR c.referee_id IS NULL;"
  },
  {
    "path": "Find Customers With Positive Revenue this Year/q.sql",
    "content": "SELECT customer_id FROM Customers AS c  WHERE c.year = 2021 GROUP BY customer_id HAVING SUM(c.revenue) > 0 ;"
  },
  {
    "path": "Find First Palindromic String in the Array/kata.go",
    "content": "package kata\n\nfunc firstPalindrome(words []string) string {\n\tfor _, word := range words {\n\t\tif isPalindrome(word) {\n\t\t\treturn word\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc isPalindrome(s string) bool {\n\tj := len(s) - 1\n\tfor i := 0; i < len(s)/2; i++ {\n\t\tif s[j] != s[i] {\n\t\t\treturn false\n\t\t}\n\t\tj--\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "Find First and Last Position of Element in Sorted Array/kata.go",
    "content": "package kata\n\nfunc searchRange(nums []int, target int) []int {\n\n\tidx := make([]int, 2)\n\tidx[0] = -1\n\tidx[1] = -1\n\n\tfirst := true\n\tfor i, n := range nums {\n\t\tif n == target {\n\t\t\tif first {\n\t\t\t\tidx[0] = i\n\t\t\t\tfirst = false\n\t\t\t} else {\n\t\t\t\tidx[1] = i\n\t\t\t}\n\t\t}\n\t}\n\n\tif idx[1] == -1 {\n\t\tidx[1] = idx[0]\n\t}\n\n\treturn idx\n}\n"
  },
  {
    "path": "Find Followers Count/q.sql",
    "content": "SELECT user_id, COUNT(follower_id) AS followers_count FROM Followers GROUP BY user_id ORDER BY user_id ASC;"
  },
  {
    "path": "Find Greatest Common Divisor of Array/kata.go",
    "content": "package Find_Greatest_Common_Divisor_of_Array\n\nimport \"math\"\n\nfunc findGCD(nums []int) int {\n\n\tmin := int(math.Inf(-1))\n\tmax := int(math.Inf(-1))\n\tfor _, n := range nums {\n\t\tif max == int(math.Inf(-1)) || n > max {\n\t\t\tmax = n\n\t\t}\n\t\tif min == int(math.Inf(-1)) || n < min {\n\t\t\tmin = n\n\t\t}\n\t}\n\n\tfor gcd := max; gcd > 0; gcd-- {\n\t\tif min%gcd == 0 && max%gcd == 0 {\n\t\t\treturn gcd\n\t\t}\n\t}\n\n\treturn -1\n}\n"
  },
  {
    "path": "Find K Closest Elements/kata.go",
    "content": "package kata\n\nimport (\n\t\"math\"\n\t\"sort\"\n)\n\ntype value struct {\n\tv int\n\td int\n}\n\nfunc findClosestElements(arr []int, k int, x int) []int {\n\n\tdis := make([]value, len(arr))\n\tfor i := 0; i < len(arr); i++ {\n\t\telem := value{\n\t\t\tv: arr[i],\n\t\t\td: int(math.Abs(float64(arr[i]) - float64(x))),\n\t\t}\n\t\tdis[i] = elem\n\t}\n\tsort.Slice(dis, func(i, j int) bool {\n\t\tif dis[i].d == dis[j].d && dis[i].v < dis[j].v {\n\t\t\treturn true\n\t\t} else if dis[i].d < dis[j].d {\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t})\n\tres := make([]int, k)\n\tfor i := 0; i < len(dis[:k]); i++ {\n\t\tres[i] = dis[i].v\n\t}\n\tsort.Slice(res, func(i, j int) bool {\n\t\treturn res[i] < res[j]\n\t})\n\treturn res\n}\n"
  },
  {
    "path": "Find K-Length Substrings With No Repeated Characters/kata.java",
    "content": "class Solution {\n    public int numKLenSubstrNoRepeats(String s, int k) {\n        if (s.length() < k) {\n            return 0;\n        }\n\n        var characterCount = 0;\n        var wordCount = 0;\n        HashMap<Character, Integer> windowTracker = new HashMap<>();\n        for (var i = 0; i < s.length(); i++) {\n            if (windowTracker.containsKey(s.charAt(i))) {\n                var otherIndex = windowTracker.get(s.charAt(i));\n                i = otherIndex + 1;\n                windowTracker.clear();\n                characterCount = 0;\n            }\n            windowTracker.put(s.charAt(i), i);\n            characterCount++;\n            if (characterCount == k) {\n                wordCount++;\n                windowTracker.remove(s.charAt(i - (k-1)));\n                characterCount = k-1 ;\n            }\n        }\n\n        return wordCount;\n    }\n}"
  },
  {
    "path": "Find Largest Value in Each Tree Row/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc largestValues(root *TreeNode) []int {\n\tset := make(map[int]*largest)\n\tfindAll(root, set, 0)\n\ta := make([]int, len(set))\n\tvar i int\n\tfor _, v := range set {\n\t\ta[v.Level] = v.Val\n\t\ti++\n\t}\n\treturn a\n}\n\ntype largest struct {\n\tVal   int\n\tLevel int\n}\n\nfunc findAll(node *TreeNode, set map[int]*largest, l int) {\n\tif node == nil {\n\t\treturn\n\t}\n\tv, ok := set[l]\n\tif ok {\n\t\tif node.Val >= v.Val {\n\t\t\tv.Val = node.Val\n\t\t\tset[l] = v\n\t\t}\n\t} else {\n\t\tset[l] = &largest{Val: node.Val, Level: l}\n\t}\n\tif node.Left != nil {\n\t\tfindAll(node.Left, set, l+1)\n\t}\n\tif node.Right != nil {\n\t\tfindAll(node.Right, set, l+1)\n\t}\n}\n"
  },
  {
    "path": "Find Lucky Integer in an Array/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc findLucky(arr []int) int {\n\tsort.Slice(arr, func(i, j int) bool {\n\t\treturn arr[i] < arr[j]\n\t})\n\n\tvar maxNumber int\n\tlastNumber := arr[0]\n\tcount := 1\n\tfor i := 1; i < len(arr); i++ {\n\t\tif arr[i] == lastNumber {\n\t\t\tcount++\n\t\t} else {\n\t\t\tif count == lastNumber && lastNumber > maxNumber {\n\t\t\t\tmaxNumber = lastNumber\n\t\t\t}\n\t\t\tlastNumber = arr[i]\n\t\t\tcount = 1\n\t\t}\n\t}\n\n\tif count > 1 {\n\t\tif count == lastNumber && lastNumber > maxNumber {\n\t\t\tmaxNumber = lastNumber\n\t\t}\n\t}\n\n\tif maxNumber == 0 {\n\t\treturn -1\n\t}\n\n\treturn maxNumber\n}\n"
  },
  {
    "path": "Find Maximum Number of String Pairs/kata.go",
    "content": "package kata\n\nfunc maximumNumberOfStringPairs(words []string) int {\n\tpair := make(map[string]int, 0)\n\tvar c int\n\tfor i := 0; i < len(words); i++ {\n\t\tpair[words[i]]++\n\t\treversedWord := string(words[i][1]) + string(words[i][0])\n\t\tif reversedWord == words[i] {\n\t\t\tcontinue\n\t\t}\n\t\tpair[reversedWord]++\n\t\tif pair[reversedWord] == 2 {\n\t\t\tpair[reversedWord] = pair[reversedWord] - 2\n\t\t\tc++\n\t\t}\n\t}\n\n\treturn c\n}\n"
  },
  {
    "path": "Find Median from Data Stream/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\ntype MedianFinder struct {\n\tlist []int\n}\n\n/** initialize your data structure here. */\nfunc Constructor() MedianFinder {\n\treturn MedianFinder{list: make([]int, 0)}\n}\n\nfunc (this *MedianFinder) AddNum(num int) {\n\tthis.list = append(this.list, num)\n}\n\nfunc (this *MedianFinder) FindMedian() float64 {\n\tsort.Slice(this.list, func(i, j int) bool {\n\t\treturn this.list[i] < this.list[j]\n\t})\n\tif len(this.list)%2 == 1 {\n\t\treturn float64(this.list[len(this.list)/2])\n\t}\n\treturn (float64(this.list[len(this.list)/2-1]) + float64(this.list[len(this.list)/2])) / 2\n}\n\n/**\n * Your MedianFinder object will be instantiated and called as such:\n * obj := Constructor();\n * obj.AddNum(num);\n * param_2 := obj.FindMedian();\n */\n"
  },
  {
    "path": "Find Minimum Time to Finish All Jobs II/kata.java",
    "content": "class Solution {\n    public int minimumTime(int[] jobs, int[] workers) {\n        Arrays.sort(jobs);\n        Arrays.sort(workers);\n        var minAmount = -1d;\n        for (var i = workers.length-1; i >= 0; i--) {\n            var amount =  Math.ceil((double) jobs[i] / (double) workers[i]);\n            if (minAmount == -1 || amount > minAmount) {\n                minAmount =  amount;\n            }\n        }\n        return (int) minAmount;\n    }\n}"
  },
  {
    "path": "Find Minimum in Rotated Sorted Array/kata.go",
    "content": "package kata\n\nfunc findMin(nums []int) int {\n\treturn search(nums, -1)\n}\n\nfunc search(nums []int, min int) int {\n\tif len(nums) == 1 {\n\t\treturn nums[0]\n\t}\n\tif min == -1 {\n\t\tmin = nums[len(nums)/2]\n\t}\n\tr := search(nums[len(nums)/2:], min)\n\tif r < min {\n\t\tmin = r\n\t}\n\tl := search(nums[:len(nums)/2], min)\n\tif l < min {\n\t\tmin = l\n\t}\n\treturn min\n}\n"
  },
  {
    "path": "Find Minimum in Rotated Sorted Array II/kata.go",
    "content": "package kata\n\nfunc findMin(nums []int) int {\n\tif len(nums) == 1 {\n\t\treturn nums[0]\n\t}\n\n\tmid := len(nums) / 2\n\tmin := nums[mid]\n\tleftMin := search(nums[mid:], min)\n\tif leftMin < min {\n\t\tmin = leftMin\n\t}\n\n\trightMin := search(nums[:mid], min)\n\tif rightMin < min {\n\t\tmin = rightMin\n\t}\n\n\treturn min\n}\n\nfunc search(nums []int, min int) int {\n\tmid := len(nums) / 2\n\tif nums[mid] < min {\n\t\tmin = nums[mid]\n\t}\n\tif len(nums) == 1 {\n\t\treturn min\n\t}\n\tleftMin := search(nums[mid:], min)\n\tif leftMin < min {\n\t\tmin = leftMin\n\t}\n\trightMin := search(nums[:mid], min)\n\tif rightMin < min {\n\t\tmin = rightMin\n\t}\n\treturn min\n}\n"
  },
  {
    "path": "Find Missing and Repeated Values/kata.go",
    "content": "package kata\n\nfunc findMissingAndRepeatedValues(grid [][]int) []int {\n    var gridRowCount = len(grid)\n    var gridColCount = len(grid[0])\n    \n    var counter = make([]int, gridRowCount*gridColCount)\n\n    for i := 0; i < len(grid); i++ {\n        for j := 0; j < len(grid[0]); j++ {\n            counter[grid[i][j] - 1]++\n        }   \n    }\n\n    var missingNumber int\n    var repeatingNumber int\n    for i := 0; i < len(counter); i++ {\n        if counter[i] == 0 {\n            missingNumber = i+1\n        } else if counter[i] == 2 {\n            repeatingNumber = i+1\n        }\n    }   \n\n   return []int{repeatingNumber, missingNumber}\n}"
  },
  {
    "path": "Find Mode in Binary Search Tree/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc findMode(root *TreeNode) []int {\n\tc := make(map[int]int)\n\tnums := make([]int, 0)\n\tcollectModes(root, c)\n\tmax := -1\n\tfor _, n := range c {\n\t\tif max == -1 || n >= max {\n\t\t\tmax = n\n\t\t}\n\t}\n\tfor num, counter := range c {\n\t\tif counter == max {\n\t\t\tnums = append(nums, num)\n\t\t}\n\t}\n\treturn nums\n}\n\nfunc collectModes(node *TreeNode, c map[int]int) {\n\tif node == nil {\n\t\treturn\n\t}\n\tc[node.Val]++\n\n\tif node.Left != nil {\n\t\tcollectModes(node.Left, c)\n\t}\n\tif node.Right != nil {\n\t\tcollectModes(node.Right, c)\n\t}\n}\n"
  },
  {
    "path": "Find N Unique Integers Sum up to Zero/kata.go",
    "content": "package kata\n\nfunc sumZero(n int) []int {\n\tnums := make([]int, 0)\n\tif n%2 == 1 {\n\t\tnums = append(nums, 0)\n\t\tn = n - 1\n\t}\n\tfor i := 1; i < n; i = i + 2 {\n\t\tnums = append(nums, i, -i)\n\t}\n\treturn nums\n}\n"
  },
  {
    "path": "Find Nearest Point That Has the Same X or Y Coordinate/kata.java",
    "content": "class Solution {\n    public int nearestValidPoint(int x, int y, int[][] points) {\n        var index = -1;\n        var smallestDistance = -1;\n        var i = 0;\n        for (var point : points) {\n            if (point[0] == x || point[1] == y) {\n                var newDistance = Math.abs(point[0] - x) + Math.abs(point[1] - y);\n                if (index == -1) {\n                    index = i;\n                    smallestDistance = newDistance;\n                } else if (smallestDistance > newDistance) {\n                    index = i;\n                    smallestDistance = newDistance;\n                }\n            }\n            i++;\n        }\n\n        return index;\n    }\n}"
  },
  {
    "path": "Find Numbers with Even Number of Digits/kata.go",
    "content": "package kata\n\nfunc findNumbers(nums []int) int {\n\tvar c int\n\tfor _, number := range nums {\n\t\ti := 0\n\t\tfor number != 0 {\n\t\t\ti++\n\t\t\tnumber /= 10\n\t\t}\n\t\tif i%2 == 0 {\n\t\t\tc++\n\t\t}\n\t}\n\n\treturn c\n}\n"
  },
  {
    "path": "Find Peak Element/kata.go",
    "content": "package kata\n\nfunc findPeakElement(nums []int) int {\n\tif len(nums) == 1 {\n\t\treturn 0\n\t}\n\tmaxPeak := -1\n\tidx := 0\n\tfor i := 0; i < len(nums); i++ {\n\t\tif maxPeak == -1 || maxPeak < nums[i] {\n\t\t\tmaxPeak = nums[i]\n\t\t\tidx = i\n\t\t}\n\t}\n\treturn idx\n}\n"
  },
  {
    "path": "Find Pivot Index/kata.go",
    "content": "package kata\n\nfunc pivotIndex(nums []int) int {\n\tvar sum int\n\tfor _, n := range nums {\n\t\tsum = sum + n\n\t}\n\n\tvar leftSum int\n\tlast := -1\n\tfor i := len(nums) - 1; i >= 0; i-- {\n\t\tr := sum - nums[i]\n\t\tl := leftSum\n\t\tif r == l {\n\t\t\tlast = i\n\t\t}\n\t\tleftSum = leftSum + nums[i]\n\t\tsum = sum - nums[i]\n\t}\n\treturn last\n}\n"
  },
  {
    "path": "Find Players With Zero or One Losses/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\ntype player struct {\n\tlosses int\n\twins   int\n}\n\nfunc findWinners(matches [][]int) [][]int {\n\tallPlayers := make(map[int]player)\n\tfor _, match := range matches {\n\t\tplayer := allPlayers[match[1]]\n\t\tplayer.losses++\n\t\tallPlayers[match[1]] = player\n\n\t\tplayer = allPlayers[match[0]]\n\t\tplayer.wins++\n\t\tallPlayers[match[0]] = player\n\t}\n\n\tvar exactlyOneMatch []int\n\tvar notLostAnyMatches []int\n\n\tfor player, stats := range allPlayers {\n\t\tif stats.losses == 0 {\n\t\t\tnotLostAnyMatches = append(notLostAnyMatches, player)\n\t\t} else if stats.losses == 1 {\n\t\t\texactlyOneMatch = append(exactlyOneMatch, player)\n\t\t}\n\t}\n\n\tsort.Ints(notLostAnyMatches)\n\tsort.Ints(exactlyOneMatch)\n\n\treturn [][]int{notLostAnyMatches, exactlyOneMatch}\n}\n"
  },
  {
    "path": "Find Positive Integer Solution for a Given Equation/kata.py",
    "content": "package kata\n\n\"\"\"\n   This is the custom function interface.\n   You should not implement it, or speculate about its implementation\n   class CustomFunction:\n       # Returns f(x, y) for any given positive integers x and y.\n       # Note that f(x, y) is increasing with respect to both x and y.\n       # i.e. f(x, y) < f(x + 1, y), f(x, y) < f(x, y + 1)\n       def f(self, x, y):\n  \n\"\"\"\n\nimport itertools\n\nclass Solution:\n    def findSolution(self, customfunction: 'CustomFunction', z: int) -> List[List[int]]:\n        \n        numbersPairs = []\n        numbers = []\n        for i in range(1, z+1):\n            numbers.append(i)\n            numbersPairs.append([i, i])\n            \n        numbersPairs.extend(list(itertools.permutations(numbers, 2)))\n        \n        newNumbersPairs = []\n        for i in range(len(numbersPairs)):\n            z0 = customfunction.f(numbersPairs[i][0], numbersPairs[i][1])\n            if z == z0:\n                newNumbersPairs.append(numbersPairs[i]) \n                \n       \n        return newNumbersPairs\n            \n            \n        \n"
  },
  {
    "path": "Find Smallest Common Element in All Rows/kata.go",
    "content": "package Find_Smallest_Common_Element_in_All_Rows\n\nfunc smallestCommonElement(mat [][]int) int {\n\tmin := -1\n\tcounters := make(map[int]int)\n\tfor i := 0; i < len(mat); i++ {\n\t\tfor j := 0; j < len(mat[i]); j++ {\n\t\t\tc := counters[mat[i][j]]\n\t\t\tif c == i+1 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tc++\n\t\t\tif c == i+1 && len(mat)-1 == i {\n\t\t\t\tif min == -1 || mat[i][j] < min {\n\t\t\t\t\tmin = mat[i][j]\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcounters[mat[i][j]] = c\n\t\t}\n\t}\n\treturn min\n}\n"
  },
  {
    "path": "Find Smallest Letter Greater Than Target/kata.go",
    "content": "package kata\n\nfunc nextGreatestLetter(letters []byte, target byte) byte {\n\n\tlastChar := byte(1)\n\tfor _, c := range letters {\n\t\tif target < c {\n\t\t\tlastChar = c\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif lastChar == byte(1) {\n\t\tlastChar = letters[0]\n\t}\n\n\treturn lastChar\n}\n"
  },
  {
    "path": "Find Target Indices After Sorting Array/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc targetIndices(nums []int, target int) []int {\n\tsort.Ints(nums)\n\tvar indices []int\n\n\tj := len(nums) - 1\n\tfor i := 0; i <= len(nums)/2; i++ {\n\t\tif nums[i] == target {\n\t\t\tindices = append(indices, i)\n\t\t}\n\n\t\tif j == len(nums)/2 {\n\t\t\tcontinue\n\t\t}\n\n\t\tif nums[j] == target {\n\t\t\tindices = append(indices, j)\n\t\t}\n\t\tj--\n\t}\n\n\tsort.Ints(indices)\n\treturn indices\n}\n"
  },
  {
    "path": "Find The Original Array of Prefix Xor/kata.java",
    "content": "class Solution {\n    public int[] findArray(int[] pref) {\n        int[] res = new int[pref.length];\n        res[0] = pref[0];\n        if (pref.length == 1) return res;\n        for (var i = 1; i < pref.length; i++) {\n            res[i] = pref[i-1] ^ pref[i];\n        }\n        return res;\n    }\n}"
  },
  {
    "path": "Find Triangular Sum of an Array/kata.go",
    "content": "package Find_Triangular_Sum_of_an_Array\n\nfunc triangularSum(nums []int) int {\n\tif len(nums) == 1 {\n\t\treturn nums[0]\n\t}\n\n\ti := len(nums) - 1\n\tj := len(nums) - 2\n\tk := 1\n\tfor {\n\t\tnums = append(nums, (nums[k-1]+nums[k])%10)\n\t\tk++\n\t\ti--\n\t\tif i == 0 {\n\t\t\tk++\n\t\t\ti += j\n\t\t\tj = j - 1\n\t\t}\n\t\tif i == 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn nums[len(nums)-1]\n}\n"
  },
  {
    "path": "Find Users With Valid E-Mails/q.sql",
    "content": "SELECT * FROM Users WHERE REGEXP_LIKE(mail, '^([a-zA-Z]{1})([a-zA-Z0-9\\_\\.\\-]*)\\\\@leetcode\\\\.com$')"
  },
  {
    "path": "Find Words Containing Character/kata.go",
    "content": "package kata\n\nfunc findWordsContaining(words []string, x byte) []int {\n    var indices []int\n    for i, word := range words {\n        for _, char := range word {\n            if byte(char) == x {\n                indices = append(indices, i)\n                break\n            }\n        }\n    }\n    return indices\n}"
  },
  {
    "path": "Find Words That Can Be Formed by Characters/kata.go",
    "content": "package kata\n\nfunc countCharacters(words []string, chars string) int {\n\n\tstats := make(map[rune]int, len(chars))\n\tfor _, c := range chars {\n\t\tstats[c]++\n\t}\n\n\tvar sum int\nouterLoop:\n\tfor _, word := range words {\n\t\tif len(word) > len(chars) {\n\t\t\tcontinue\n\t\t}\n\t\tcurrentStats := make(map[rune]int)\n\t\tfor _, char := range word {\n\t\t\tallowedCount, ok := stats[char]\n\t\t\tif !ok || currentStats[char] >= allowedCount {\n\t\t\t\tcontinue outerLoop\n\t\t\t}\n\t\t\tcurrentStats[char]++\n\t\t}\n\t\tsum += len(word)\n\t}\n\n\treturn sum\n}\n"
  },
  {
    "path": "Find and Replace Pattern/kata.go",
    "content": "package kata\n\nfunc findAndReplacePattern(words []string, pattern string) []string {\n\tcleanWords := cleanWords(words)\n\tpattern = cleanWord(pattern)\n\n\tvar matched []string\n\tfor i, w := range cleanWords {\n\t\tif w == pattern {\n\t\t\tmatched = append(matched, words[i])\n\t\t}\n\t}\n\n\treturn matched\n}\n\nfunc cleanWords(words []string) []string {\n\tcws := make([]string, len(words))\n\tfor i, w := range words {\n\t\tcws[i] = cleanWord(w)\n\t}\n\treturn cws\n}\n\nfunc cleanWord(w string) string {\n\tcleanWord := \"A\"\n\tchar := make(map[byte]byte)\n\tlastChar := w[0]\n\tchar[w[0]] = 65\n\tfor i := 1; i < len(w); i++ {\n\t\tif lastChar == w[i] {\n\t\t\tcleanWord += string(cleanWord[i-1])\n\t\t} else if e, ok := char[w[i]]; ok {\n\t\t\tcleanWord += string(e)\n\t\t} else {\n\t\t\tcleanWord += string(cleanWord[i-1] + 1)\n\t\t}\n\t\tlastChar = w[i]\n\t\tchar[w[i]] = cleanWord[i-1] + 1\n\t}\n\treturn cleanWord\n}\n"
  },
  {
    "path": "Find the Array Concatenation Value/kata.java",
    "content": "class Solution {\n    public long findTheArrayConcVal(int[] nums) {\n        var j = nums.length-1;\n        long c  = 0;\n        var i = 0;\n        for (;i < nums.length/2; i++) {\n            var al = (int) (Math.log10(nums[i]) + 1);\n            var bl = (int) (Math.log10(nums[j]) + 1);\n            var a = 0;\n            var b = 0;\n\n            if (al == bl) {\n                a = nums[i] * (int) Math.pow(10, (double)al);\n                b = nums[j];\n            } else {\n                a = nums[i] * (int) Math.pow(10, (double)bl);\n                b = nums[j];\n            }\n            c += a + b;\n            j--;\n        }\n\n        if (nums.length % 2 != 0) {\n            c += nums[i];\n        }\n\n        return c;\n    }\n}"
  },
  {
    "path": "Find the Difference/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc findTheDifference(s string, t string) byte {\n\n\tbs := []byte(s)\n\n\tbt := []byte(t)\n\n\tsort.Slice(bs, func(i, j int) bool {\n\t\treturn bs[i] < bs[j]\n\t})\n\n\tsort.Slice(bt, func(i, j int) bool {\n\t\treturn bt[i] < bt[j]\n\t})\n\n\tvar max int\n\tif len(bs) < len(bt) {\n\t\tmax = len(bs)\n\t} else {\n\t\tmax = len(bt)\n\t}\n\n\tfor i := 0; i < max; i++ {\n\t\tif bs[i] != bt[i] {\n\t\t\treturn bt[i]\n\t\t}\n\t}\n\n\treturn bt[len(t)-1]\n}\n"
  },
  {
    "path": "Find the Distance Value Between Two Arrays/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc findTheDistanceValue(arr1 []int, arr2 []int, d int) int {\n\n\tvar c int\n\tfor _, n1 := range arr1 {\n\t\tvar has bool\n\t\tfor _, n2 := range arr2 {\n\t\t\tnewDistance := math.Abs(float64(n1) - float64(n2))\n\t\t\tif newDistance <= float64(d) {\n\t\t\t\thas = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif !has {\n\t\t\tc++\n\t\t}\n\t}\n\n\treturn c\n}\n"
  },
  {
    "path": "Find the Duplicate Number/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc findDuplicate(nums []int) int {\n\tsort.Ints(nums)\n\tfor i := 1; i < len(nums); i++ {\n\t\tdiff := nums[i-1] - nums[i]\n\t\tif diff == 0 {\n\t\t\treturn nums[i]\n\t\t}\n\t}\n\treturn -1\n}\n"
  },
  {
    "path": "Find the Highest Altitude/kata.go",
    "content": "package Find_the_Highest_Altitude\n\nfunc largestAltitude(gain []int) int {\n\tvar current int\n\thighestAltitude := current\n\tfor _, n := range gain {\n\t\tcurrent += n\n\t\tif current > highestAltitude {\n\t\t\thighestAltitude = current\n\t\t}\n\t}\n\treturn highestAltitude\n}\n"
  },
  {
    "path": "Find the K-Beauty of a Number/kata.java",
    "content": "class Solution {\n    public int divisorSubstrings(int num, int k) {\n        var oldNum = num;\n        var digitCount = ((int) Math.log10((double) num));\n        var sum = 0;\n        var countK = k-1;\n        var count = 0;\n        for (; digitCount >= 0; digitCount--) {\n            var digit = (num/(int) Math.pow(10, (double) digitCount)) % 10;\n\n            sum += digit * Math.pow(10, (double) countK);\n            countK--;\n            if (countK < 0) {\n                if (sum > 0 && oldNum % sum == 0) count++;\n                countK = k - 1;\n                if (k != 1) {\n                    digitCount += k-1;\n                }\n                sum = 0;\n            }\n        }\n        return count;\n    }\n}"
  },
  {
    "path": "Find the Kth Largest Integer in the Array/kata.go",
    "content": "package Find_the_Kth_Largest_Integer_in_the_Array\n\nimport \"sort\"\n\nfunc kthLargestNumber(nums []string, k int) string {\n\tsort.Slice(nums, func(i, j int) bool {\n\t\tif len(nums[i]) == len(nums[j]) && nums[i] > nums[j] {\n\t\t\treturn true\n\t\t} else if len(nums[i]) > len(nums[j]) {\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t})\n\treturn nums[k-1]\n}\n"
  },
  {
    "path": "Find the Maximum Achievable Number/kata.go",
    "content": "package kata\n\nfunc theMaximumAchievableX(num int, t int) int {\n    return (num + t) + t\n}"
  },
  {
    "path": "Find the Minimum and Maximum Number of Nodes Between Critical Points/kata.go",
    "content": "package Find_the_Minimum_and_Maximum_Number_of_Nodes_Between_Critical_Points\n\nimport \"math\"\n\ntype ListNode struct {\n\tVal  int\n\tNext *ListNode\n}\n\nfunc nodesBetweenCriticalPoints(head *ListNode) []int {\n\n\tif head == nil {\n\t\tpanic(\"node list head is nil\")\n\t}\n\n\tpreviousNode := head\n\tcurrentNode := head.Next\n\n\tc := 1\n\tmatched := make([]int, 0)\n\tmin := math.Inf(1)\n\tfor currentNode != nil {\n\t\tif currentNode.Val < previousNode.Val && (currentNode.Next != nil && currentNode.Next.Val > currentNode.Val) {\n\t\t\tmatched = append(matched, c)\n\t\t} else if currentNode.Val > previousNode.Val && (currentNode.Next != nil && currentNode.Next.Val < currentNode.Val) {\n\t\t\tmatched = append(matched, c)\n\t\t}\n\n\t\tif len(matched) >= 2 && float64(matched[len(matched)-1]-matched[len(matched)-2]) < min {\n\t\t\tmin = float64(matched[len(matched)-1] - matched[len(matched)-2])\n\t\t}\n\n\t\tpreviousNode = currentNode\n\t\tcurrentNode = currentNode.Next\n\t\tc++\n\t}\n\n\tif len(matched) == 0 || len(matched) == 1 {\n\t\treturn []int{-1, -1}\n\t}\n\n\treturn []int{int(min), matched[len(matched)-1] - matched[0]}\n}\n"
  },
  {
    "path": "Find the Missing IDs/q.sql",
    "content": "WITH RECURSIVE nums AS (\n    SELECT 1 AS value\nUNION ALL\nSELECT value + 1 AS value\nFROM nums\nWHERE nums.value < (SELECT MAX(customer_id) FROM Customers))\n\nSELECT value AS ids FROM nums WHERE value NOT IN(SELECT customer_id FROM Customers) ORDER BY value ASC;"
  },
  {
    "path": "Find the Peaks/kata.go",
    "content": "package kata\n\nfunc findPeaks(mountain []int) []int {\n    var peaks []int\n    for i := 1; i < len(mountain)-1; i++ {\n         if mountain[i] > mountain[i-1] && mountain[i] > mountain[i+1] {\n             peaks = append(peaks, i)\n         }\n    }\n    return peaks\n}"
  },
  {
    "path": "Find the Pivot Integer/kata.java",
    "content": "class Solution {\n    public int pivotInteger(int n) {\n        var sum = 0;\n        for (var num = 1; num < n+1; num++) {\n            sum += num;\n            var count = n - num;\n            if (sum == (count+1) * num + (count*(count+1)/2)) {\n                return num;\n            }\n        }\n        return -1;\n    }\n}"
  },
  {
    "path": "Find the Sum of Encrypted Integers/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc sumOfEncryptedInt(nums []int) int {\n\tvar sum int\n\tfor _, num := range nums {\n\t\tvar digitCount float64\n\t\tvar max int\n\t\tfor num > 0 {\n\t\t\tdigit := num % 10\n\t\t\tif max < digit {\n\t\t\t\tmax = digit\n\t\t\t}\n\t\t\tnum = num / 10\n\t\t\tdigitCount++\n\t\t}\n\n\t\tsum += max * (1 - int(math.Pow(10, digitCount))) / (1 - 10)\n\t}\n\n\treturn sum\n}\n"
  },
  {
    "path": "Find the Team Size/q.sql",
    "content": "SELECT employee_id, (SELECT COUNT(team_id) FROM Employee AS e1 WHERE e1.team_id = e.team_id) AS team_size FROM Employee AS e;"
  },
  {
    "path": "Find the Winner of the Circular Game/kata.java",
    "content": "class Solution {\n    public int findTheWinner(int n, int k) {\n        Queue<Integer> queue = new LinkedList<>();\n        for (var i = 1; i < n+1; i++) queue.add(i);\n        var i = 0;\n        while(queue.size() != 1) {\n            var element = queue.poll();\n            i++;\n            if (i == k) {\n                i = 0;\n            } else {\n                queue.add(element);\n            }\n        }\n        return queue.poll();\n    }\n}"
  },
  {
    "path": "First Bad Version/kata.go",
    "content": "package kata\n\n/**\n * Forward declaration of isBadVersion API.\n * @param   version   your guess about first bad version\n * @return            true if current version is bad\n *                    false if current version is good\n * func isBadVersion(version int) bool;\n */\n\nfunc firstBadVersion(n int) int {\n\tfor i := 1; i <= n; i++ {\n\t\tif isBadVersion(i) {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n"
  },
  {
    "path": "First Letter to Appear Twice/kata.go",
    "content": "package kata\n\nfunc repeatedCharacter(s string) byte {\n\n\tindexLocation := make(map[rune]int)\n\tfor i, char := range s {\n\t\tv, ok := indexLocation[char]\n\t\tif !ok {\n\t\t\tindexLocation[char] = -1\n\t\t} else if v == -1 {\n\t\t\tindexLocation[char] = i\n\t\t}\n\t}\n\n\tvar minChar rune\n\tmin := -1\n\tfor char, i := range indexLocation {\n\t\tif i != -1 && (min == -1 || min > i) {\n\t\t\tmin = i\n\t\t\tminChar = char\n\t\t}\n\t}\n\n\treturn byte(minChar)\n}\n"
  },
  {
    "path": "First Missing Positive/kata.go",
    "content": "package kata\n\nimport (\n\t\"math\"\n\t\"sort\"\n)\n\nfunc firstMissingPositive(nums []int) int {\n\tsort.Ints(nums)\n\tcurrentNum := 1\n\tpreNum := math.Inf(-1)\n\tfor _, num := range nums {\n\t\tif num > 0 {\n\t\t\tif int(preNum) == num {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif currentNum == num {\n\t\t\t\tpreNum = float64(num)\n\t\t\t\tcurrentNum++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\treturn currentNum\n}\n"
  },
  {
    "path": "First Unique Character in a String/kata.go",
    "content": "package kata\n\nfunc firstUniqChar(s string) int {\n\ttype counter struct {\n\t\ti int\n\t\tc int\n\t}\n\n\tset := make(map[rune]*counter)\n\tfor i, c := range s {\n\t\tv, ok := set[c]\n\t\tif !ok {\n\t\t\tset[c] = &counter{c: 1, i: i}\n\t\t\tcontinue\n\t\t}\n\t\tv.c = v.c + 1\n\t\tset[c] = v\n\t}\n\n\tindex := -1\n\tfor _, v := range set {\n\t\tif (index == -1 && v.c == 1) || (v.c == 1 && index > v.i) {\n\t\t\tindex = v.i\n\t\t}\n\t}\n\treturn index\n}\n"
  },
  {
    "path": "Fix Names in a Table/q.sql",
    "content": "SELECT user_id, CONCAT(UPPER(LEFT(name, 1)), LOWER(SUBSTRING(name, 2))) AS name FROM Users ORDER BY user_id;"
  },
  {
    "path": "Fix Product Name Format/q.sql",
    "content": "SELECT\n    TRIM(LOWER(product_name)) AS product_name,\n    DATE_FORMAT(sale_date, '%Y-%m') AS sale_date,\n    COUNT(*) AS total\nFROM\n    Sales\nGROUP BY\n    1, 2\nORDER BY\n    product_name ASC,\n    sale_date ASC;"
  },
  {
    "path": "Fizz Buzz/kata.go",
    "content": "package kata\n\nimport \"strconv\"\n\nfunc fizzBuzz(n int) []string {\n\tvalues := make([]string, n)\n\tvar j int\n\tfor i := 1; i <= n; i++ {\n\t\tif i%3 == 0 && i%5 == 0 {\n\t\t\tvalues[j] = \"FizzBuzz\"\n\t\t} else if i%3 == 0 {\n\t\t\tvalues[j] = \"Fizz\"\n\t\t} else if i%5 == 0 {\n\t\t\tvalues[j] = \"Buzz\"\n\t\t} else {\n\t\t\tvalues[j] = string(strconv.Itoa(i))\n\t\t}\n\t\tj++\n\t}\n\treturn values\n}\n"
  },
  {
    "path": "Flatten 2D Vector/kata.go",
    "content": "package Flatten_2D_Vector\n\ntype Vector2D struct {\n\tvec [][]int\n\ti   int\n\tj   int\n\tend bool\n}\n\nfunc Constructor(vec [][]int) Vector2D {\n\treturn Vector2D{vec: vec}\n}\n\nfunc (this *Vector2D) Next() int {\n\tn := this.vec[this.j][this.i]\n\tif this.i+1 < len(this.vec[this.j]) {\n\t\tthis.i = this.i + 1\n\t} else if this.j+1 < len(this.vec) {\n\t\tthis.j = this.j + 1\n\t\tthis.i = 0\n\t} else {\n\t\tthis.end = true\n\t}\n\treturn n\n}\n\nfunc (this *Vector2D) HasNext() bool {\n\tif this.end {\n\t\treturn false\n\t}\n\n\tif len(this.vec) > 0 && this.j < len(this.vec) && len(this.vec[this.j]) == 0 {\n\t\tthis.j++\n\t\treturn this.HasNext()\n\t}\n\tif len(this.vec) > 0 && this.j < len(this.vec) && this.i < len(this.vec[this.j]) {\n\t\treturn true\n\t}\n\tif this.j+1 < len(this.vec) {\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "Flatten Nested List Iterator/kata.go",
    "content": "package kata\n\n/**\n * // This is the interface that allows for creating nested lists.\n * // You should not implement it, or speculate about its implementation\n * type NestedInteger struct {\n * }\n *\n * // Return true if this NestedInteger holds a single integer, rather than a nested list.\n * func (this NestedInteger) IsInteger() bool {}\n *\n * // Return the single integer that this NestedInteger holds, if it holds a single integer\n * // The result is undefined if this NestedInteger holds a nested list\n * // So before calling this method, you should have a check\n * func (this NestedInteger) GetInteger() int {}\n *\n * // Set this NestedInteger to hold a single integer.\n * func (n *NestedInteger) SetInteger(value int) {}\n *\n * // Set this NestedInteger to hold a nested list and adds a nested integer to it.\n * func (this *NestedInteger) Add(elem NestedInteger) {}\n *\n * // Return the nested list that this NestedInteger holds, if it holds a nested list\n * // The list length is zero if this NestedInteger holds a single integer\n * // You can access NestedInteger's List element directly if you want to modify it\n * func (this NestedInteger) GetList() []*NestedInteger {}\n */\n\ntype NestedIterator struct {\n\tc            chan int\n\tcurrentValue *int\n}\n\nfunc Constructor(nestedList []*NestedInteger) *NestedIterator {\n\tc := make(chan int)\n\tgo recursiveChannling(nestedList, c, true)\n\treturn &NestedIterator{c: c}\n}\n\nfunc (this *NestedIterator) Next() int {\n\tif this.currentValue == nil {\n\t\tpanic(\"unknown order of operation\")\n\t}\n\tv := this.currentValue\n\tthis.currentValue = nil\n\treturn *v\n}\n\nfunc (this *NestedIterator) HasNext() bool {\n\tv, ok := <-this.c\n\tif ok {\n\t\tpv := new(int)\n\t\t*pv = v\n\t\tthis.currentValue = pv\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc recursiveChannling(nestedList []*NestedInteger, c chan int, firstLayer bool) {\n\tfor _, o := range nestedList {\n\t\tif o.IsInteger() {\n\t\t\tc <- o.GetInteger()\n\t\t} else {\n\t\t\trecursiveChannling(o.GetList(), c, false)\n\t\t}\n\t}\n\n\tif firstLayer {\n\t\tclose(c)\n\t}\n}\n"
  },
  {
    "path": "Flatten a Multilevel Doubly Linked List/kata.go",
    "content": "package kata\n\n/**\n * Definition for a Node.\n * type Node struct {\n *     Val int\n *     Prev *Node\n *     Next *Node\n *     Child *Node\n * }\n */\n\nfunc flatten(root *Node) *Node {\n\n\tcurrentNode := root\n\tfor currentNode != nil {\n\t\tif currentNode.Child != nil {\n\t\t\tr(currentNode, currentNode.Next, currentNode.Child)\n\t\t\tcontinue\n\t\t}\n\t\tcurrentNode = currentNode.Next\n\t}\n\treturn root\n}\n\nfunc r(currentNode *Node, nextNode *Node, childNode *Node) {\n\tcurrentNode.Child = nil\n\n\tcurrentChildNode := childNode\n\tprevChildNode := childNode\n\tfor currentChildNode != nil {\n\t\tif currentChildNode.Child != nil {\n\t\t\tr(currentChildNode, currentChildNode.Next, currentChildNode.Child)\n\t\t\tcontinue\n\t\t}\n\t\tprevChildNode = currentChildNode\n\t\tcurrentChildNode = currentChildNode.Next\n\t}\n\n\tcurrentNode.Next = childNode\n\tchildNode.Prev = currentNode\n\n\tif nextNode != nil {\n\t\tnextNode.Prev = prevChildNode\n\t\tprevChildNode.Next = nextNode\n\t}\n}\n"
  },
  {
    "path": "Flipping an Image/kata.go",
    "content": "package kata\n\nfunc flipAndInvertImage(A [][]int) [][]int {\n\tfor i := 0; i < len(A); i++ {\n\t\tk := len(A[i]) - 1\n\t\tfor j := 0; j < len(A[i])/2; j++ {\n\t\t\tA[i][j], A[i][k] = A[i][k], A[i][j]\n\t\t\tk--\n\t\t}\n\t}\n\tfor i := 0; i < len(A); i++ {\n\t\tfor j := 0; j < len(A[i]); j++ {\n\t\t\tA[i][j] = A[i][j] ^ 1\n\t\t}\n\t}\n\treturn A\n}\n"
  },
  {
    "path": "Friendly Movies Streamed Last Month/q.sql",
    "content": "SELECT\n  DISTINCT(title)\nFROM\n  TVProgram AS p\n  JOIN Content AS c ON c.content_id = p.content_id\nWHERE\n  c.Kids_content = 'Y'\n  AND c.content_type = 'Movies'\n  AND MONTH(p.program_date) = 6\n  AND YEAR(p.program_date) = 2020;"
  },
  {
    "path": "Function Composition/kata.ts",
    "content": "type F = (x: number) => number;\n\nfunction compose(functions: F[]): F {\n    return function(x) {\n        for (var i = functions.length-1; i >= 0; i--) {\n             x = functions[i](x)\n        }   \n        return x\n    }\n};\n\n/**\n * const fn = compose([x => x + 1, x => 2 * x])\n * fn(4) // 9\n */"
  },
  {
    "path": "Game Play Analysis I/q.sql",
    "content": "SELECT player_id, min(event_date) AS first_login  FROM Activity GROUP BY player_id ORDER BY event_date;"
  },
  {
    "path": "Generate a String With Characters That Have Odd Counts/kata.go",
    "content": "package kata\n\nfunc generateTheString(n int) string {\n\ts := make([]byte, n)\n\n\tvar i int\n\tif n%2 == 1 {\n\t\ti = 0\n\t} else {\n\t\ts[0] = byte('a')\n\t\ti = 1\n\t}\n\n\tb := byte('b')\n\tfor ; i < n; i++ {\n\t\ts[i] = b\n\t}\n\n\treturn string(s)\n}\n"
  },
  {
    "path": "Generate the Invoic/q.sql",
    "content": "WITH invoice_summary AS (SELECT\n                             ps.invoice_id,\n                             p.product_id,\n                             ps.quantity,\n                             SUM(ps.quantity * p.price) AS price,\n                             SUM(ps.quantity * p.price) OVER(PARTITION BY invoice_id) AS invoice_sum\n                         FROM\n                             Products AS p\n                                 JOIN Purchases AS ps USING (product_id)\n                         GROUP BY\n                             invoice_id,\n                             product_id\n                         ORDER BY\n                             invoice_sum DESC, invoice_id ASC\n)\n\nSELECT product_id, quantity, price FROM invoice_summary WHERE invoice_id = (\n    SELECT invoice_id FROM invoice_summary LIMIT 1\n);\n"
  },
  {
    "path": "Get Maximum in Generated Array/kata.go",
    "content": "package get_Maximum_in_Generated_Array\n\nfunc getMaximumGenerated(n int) int {\n\tif n == 0 {\n\t\treturn 0\n\t}\n\n\tnums := make([]int, n+1)\n\tvar l int\n\tnums[l] = 0\n\tl++\n\tnums[l] = 1\n\tmax := -1\n\tfor ; l < (n+1)/2; l++ {\n\t\ti := 2 * l\n\t\tnums[i] = nums[l]\n\t\tif max < nums[i] {\n\t\t\tmax = nums[i]\n\t\t}\n\t\tnums[i+1] = nums[l] + nums[l+1]\n\t\tif max < nums[i+1] {\n\t\t\tmax = nums[i]\n\t\t}\n\t}\n\n\tfor ; l <= n; l++ {\n\t\tif max < nums[l] {\n\t\t\tmax = nums[l]\n\t\t}\n\t}\n\n\treturn max\n}\n"
  },
  {
    "path": "Get the Size of a DataFrame/kata.py",
    "content": "import pandas as pd\n\ndef getDataframeSize(players: pd.DataFrame) -> List[int]:\n    return [players.shape[0], players.shape[1]]"
  },
  {
    "path": "Goal Parser Interpretation/kata.go",
    "content": "package kata\n\nconst o byte = 'o'\n\nfunc interpret(command string) string {\n\tvar s []byte\n\tfor i := 0; i < len(command); i++ {\n\t\tif isOpen(command[i]) && i+1 < len(command) && isClosed(command[i+1]) {\n\t\t\ts = append(s, o)\n\t\t\ti++\n\t\t} else if !isOpen(command[i]) && !isClosed(command[i]) {\n\t\t\ts = append(s, command[i])\n\t\t} else if isClosed(command[i]) {\n\t\t\tcontinue\n\t\t}\n\t}\n\treturn string(s)\n}\n\nfunc isClosed(c byte) bool {\n\tif c == ')' {\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc isOpen(c byte) bool {\n\tif c == '(' {\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "Goat Latin/kata.java",
    "content": "class Solution {\n    public String toGoatLatin(String sentence) {\n        var sb = new StringBuilder(\"\");\n        var aSuffix = new StringBuilder(\"a\");\n        final var maSuffix = \"ma\";\n        var firstChar = ' ';\n        for (var i = 0; i < sentence.length(); i++) {\n            if (i == 0 || (i > 0 && sentence.charAt(i-1) == ' ')) {\n                if (sentence.charAt(i) != 'a'\n                    && sentence.charAt(i) != 'e'\n                    && sentence.charAt(i) != 'i'\n                    && sentence.charAt(i) != 'o'\n                    && sentence.charAt(i) != 'u'\n                    && sentence.charAt(i) != 'A'\n                    && sentence.charAt(i) != 'E'\n                    && sentence.charAt(i) != 'I'\n                    && sentence.charAt(i) != 'O'\n                    && sentence.charAt(i) != 'U') {\n                    firstChar = sentence.charAt(i);\n                    if (sentence.length()-1 == i) {\n                        sb.append(firstChar);\n                        sb.append(maSuffix);\n                        sb.append(aSuffix);\n                    }\n                } else {\n                    sb.append(sentence.charAt(i));\n                    if (sentence.length()-1 == i) {\n                        sb.append(maSuffix);\n                        sb.append(aSuffix);\n                    }\n                }\n            } else if (sentence.charAt(i) == ' ' || sentence.length()-1 == i) {\n              if (sentence.length()-1 == i) {\n                 sb.append(sentence.charAt(i));\n              }\n\n              if (firstChar != ' ') {\n                  sb.append(firstChar);\n                  firstChar = ' ';\n              }\n              sb.append(maSuffix);\n              sb.append(aSuffix);\n              aSuffix.append('a');\n\n              if (sentence.length()-1 != i) {\n                 sb.append(' ');\n              }\n            } else {\n                sb.append(sentence.charAt(i));\n            }\n        }\n        return sb.toString();\n    }\n}"
  },
  {
    "path": "Grand Slam Titles/q.sql",
    "content": "\n\nWITH cte AS (\n    (\n        SELECT\n            c.Wimbledon AS player_id\n        FROM\n            Championships AS c\n    )\n    UNION ALL\n    (\n        SELECT\n            c.Fr_open AS player_id\n        FROM\n            Championships AS c\n    )\n    UNION ALL\n    (\n        SELECT\n            c.US_open AS player_id\n        FROM\n            Championships AS c\n    )\n    UNION ALL\n    (\n        SELECT\n            c.Au_open AS player_id\n        FROM\n            Championships AS c\n    )\n)\nSELECT\n    p.player_id,\n    player_name,\n    COUNT(c.player_id) AS grand_slams_count\nFROM\n    Players AS p\n        INNER JOIN cte AS c ON p.player_id = c.player_id\nGROUP BY\n    p.player_id;\n\n\n"
  },
  {
    "path": "Greatest English Letter in Upper and Lower Case/kata.go",
    "content": "package Greatest_English_Letter_in_Upper_and_Lower_Case\n\nimport \"sort\"\n\nfunc greatestLetter(s string) string {\n\n\tb := []byte(s)\n\n\tsort.Slice(b, func(i, j int) bool {\n\t\tbj, bi := b[i], b[j]\n\t\tif bi >= 97 && bi <= 122 {\n\t\t\tbi = bi - 32\n\t\t}\n\t\tif bj >= 97 && bj <= 122 {\n\t\t\tbj = bj - 32\n\t\t}\n\t\treturn bi > bj\n\t})\n\n\ti := len(b) - 2\n\tfor j := len(b) - 1; j > 0; j-- {\n\n\t\tbj, bi := b[i], b[j]\n\n\t\tif bj == bi {\n\t\t\tcontinue\n\t\t}\n\n\t\tif bi >= 97 && bi <= 122 {\n\t\t\tif bi-32 == bj {\n\t\t\t\treturn string(bj)\n\t\t\t}\n\t\t}\n\n\t\tif bj >= 97 && bj <= 122 {\n\t\t\tif bi == bj-32 {\n\t\t\t\treturn string(bi)\n\t\t\t}\n\t\t}\n\t\ti--\n\t}\n\n\treturn \"\"\n\n}\n"
  },
  {
    "path": "Group Anagrams/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc groupAnagrams(strs []string) [][]string {\n\tset := make(map[string][]string)\n\tlists := make([][]string, 0)\n\tfor _, s := range strs {\n\t\tsb := []byte(s)\n\t\tsort.Slice(sb, func(i, j int) bool {\n\t\t\treturn sb[i] < sb[j]\n\t\t})\n\t\tlist, ok := set[string(sb)]\n\t\tif ok {\n\t\t\tlist = append(list, s)\n\t\t\tset[string(sb)] = list\n\t\t} else {\n\t\t\tl := []string{s}\n\t\t\tset[string(sb)] = l\n\t\t}\n\t}\n\tfor _, list := range set {\n\t\tlists = append(lists, list)\n\t}\n\n\treturn lists\n}\n"
  },
  {
    "path": "Group By/kata.js",
    "content": "/**\n * @param {Function} fn\n * @return {Object}\n */\nArray.prototype.groupBy = function(fn) {\n    let groups = {}\n    this.forEach((element, index) => {\n        const key = fn(element)\n        if (groups[key]) {\n            groups[key].push(element)    \n        } else {\n            groups[key] = []\n            groups[key].push(element)\n        }\n    })\n    return groups\n};\n\n/**\n * [1,2,3].groupBy(String) // {\"1\":[1],\"2\":[2],\"3\":[3]}\n */"
  },
  {
    "path": "Group Sold Products By The Date/q.sql",
    "content": "SELECT\n    sell_date,\n    COUNT(DISTINCT product) AS num_sold,\n    GROUP_CONCAT(DISTINCT product ORDER BY product SEPARATOR ',') AS products\nFROM\n    Activities AS a2\nGROUP BY\n    sell_date;"
  },
  {
    "path": "Group the People Given the Group Size They Belong To/kata.go",
    "content": "package kata\n\nfunc groupThePeople(groupSizes []int) [][]int {\n\tbuckets := make(map[int][]int, 0)\n\tdividedGroups := make([][]int, 0)\n\tfor i, groupSize := range groupSizes {\n\t\tbucket := buckets[groupSize]\n\t\tif bucket == nil {\n\t\t\tbucket = make([]int, 0)\n\t\t}\n\n\t\tbucket = append(bucket, i)\n\t\tif len(bucket) == groupSize {\n\t\t\tdividedGroups = append(dividedGroups, bucket)\n\t\t\tbuckets[groupSize] = nil\n\t\t} else {\n\t\t\tbuckets[groupSize] = bucket\n\t\t}\n\t}\n\treturn dividedGroups\n}\n"
  },
  {
    "path": "H-Index/kata.go",
    "content": "package H_Index\n\nimport \"sort\"\n\nfunc hIndex(citations []int) int {\n\n\tsort.Slice(citations, func(i, j int) bool {\n\t\treturn citations[i] > citations[j]\n\t})\n\n\tfor i := len(citations) - 1; i >= 0; i-- {\n\t\tif citations[i] >= i+1 {\n\t\t\treturn i + 1\n\t\t}\n\t}\n\n\treturn 0\n}\n"
  },
  {
    "path": "HTML Entity Parser/kata.go",
    "content": "package kata\n\nvar token = map[string]string{\"&quot;\": \"\\\"\", \"&apos;\": \"'\", \"&amp;\": \"&\", \"&gt;\": \">\", \"&lt;\": \"<\", \"&frasl;\": \"/\"}\n\nfunc entityParser(text string) string {\n\toutput := make([]byte, 0)\n\ttag := make([]byte, 0)\n\tfor i := 0; i < len(text); i++ {\n\t\tif text[i] == ';' {\n\t\t\ttag = append(tag, text[i])\n\t\t\tv, ok := token[string(tag)]\n\t\t\tif ok {\n\t\t\t\toutput = append(output, v...)\n\t\t\t} else {\n\t\t\t\toutput = append(output, string(tag)...)\n\t\t\t}\n\t\t\ttag = make([]byte, 0)\n\t\t\tcontinue\n\t\t}\n\t\tif text[i] == '&' {\n\t\t\ttag = append(tag, text[i])\n\t\t\tcontinue\n\t\t}\n\t\tif len(tag) != 0 {\n\t\t\ttag = append(tag, text[i])\n\t\t} else {\n\t\t\toutput = append(output, text[i])\n\t\t}\n\t}\n\n\tif len(tag) != 0 {\n\t\toutput = append(output, tag...)\n\t}\n\n\treturn string(output)\n}\n"
  },
  {
    "path": "Hamming Distance/kata.go",
    "content": "package kata\n\nfunc hammingDistance(x int, y int) int {\n\tvar count int\n\tfor y != 0 || x != 0 {\n\n\t\tb2 := 0\n\t\tif x != 0 {\n\t\t\tb2 = x % 2\n\t\t\tx = x / 2\n\t\t}\n\n\t\tb1 := 0\n\t\tif y != 0 {\n\t\t\tb1 = y % 2\n\t\t\ty = y / 2\n\t\t}\n\n\t\tif b1 != b2 {\n\t\t\tcount++\n\t\t}\n\t}\n\treturn count\n}\n"
  },
  {
    "path": "Happy Number/kata.go",
    "content": "package kata\n\nfunc isHappy(n int) bool {\n\tvar ok bool\n\tsteps := make(map[int]int)\n\tfor n > 0 {\n\t\tn = sumFunc(n)\n\t\tif n == 1 {\n\t\t\tok = true\n\t\t\tbreak\n\t\t}\n\t\t_, found := steps[n]\n\t\tif found {\n\t\t\tok = false\n\t\t\tbreak\n\t\t}\n\t\tsteps[n] = 0\n\t}\n\n\treturn ok\n}\n\nfunc sumFunc(n int) int {\n\tvar sum int\n\tfor n > 0 {\n\t\tr := n % 10\n\t\tn = n / 10\n\t\tsum = sum + (r * r)\n\t}\n\treturn sum\n}\n"
  },
  {
    "path": "Harshad Number/kata.go",
    "content": "package kata\n\nfunc sumOfTheDigitsOfHarshadNumber(x int) int {\n\tnum := x\n\tvar sum int\n\tfor num > 0 {\n\t\tsum += num % 10\n\t\tnum = num / 10\n\t}\n\n\tif x%sum == 0 {\n\t\treturn sum\n\t}\n\treturn -1\n}\n"
  },
  {
    "path": "Height Checker/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc heightChecker(heights []int) int {\n\tsortedHeights := make([]int, len(heights))\n\tcopy(sortedHeights, heights)\n\tsort.Ints(sortedHeights)\n\tvar count int\n\tfor i := range heights {\n\t\tif heights[i] != sortedHeights[i] {\n\t\t\tcount++\n\t\t}\n\t}\n\treturn count\n}\n"
  },
  {
    "path": "High Five/kata.go",
    "content": "package High_Five\n\nimport \"sort\"\n\nfunc highFive(items [][]int) [][]int {\n\tsort.Slice(items, func(i, j int) bool {\n\t\tif items[i][0] == items[j][0] {\n\t\t\treturn items[i][1] > items[j][1]\n\t\t}\n\t\treturn items[i][0] < items[j][0]\n\t})\n\n\tcurrentNumber := items[0][0]\n\tcounter := 1\n\tsum := items[0][1]\n\tres := make([][]int, 0)\n\tfor i := 1; i < len(items); i++ {\n\t\tif counter == 5 && currentNumber != items[i][0] {\n\t\t\tres = append(res, []int{currentNumber, sum / 5})\n\t\t\tcurrentNumber = items[i][0]\n\t\t\tsum = items[i][1]\n\t\t\tcounter = 1\n\t\t\tcontinue\n\t\t} else if counter == 5 {\n\t\t\tcontinue\n\t\t}\n\t\tsum += items[i][1]\n\t\tcounter++\n\t}\n\n\tif counter == 5 {\n\t\tres = append(res, []int{currentNumber, sum / 5})\n\t}\n\n\treturn res\n}\n"
  },
  {
    "path": "How Many Apples Can You Put into the Basket/kata.java",
    "content": "import java.util.Arrays;\n\nclass Solution {\n    public int maxNumberOfApples(int[] weight) {\n        Arrays.sort(weight);\n        var total = 0;\n        var count = 0;\n        for (var item: weight) {\n            if (total + item > 5000) {\n                break;\n            }\n            total = total + item;\n            count++;\n        }\n        return count;\n    }\n}"
  },
  {
    "path": "How Many Numbers Are Smaller Than the Current Number/kata.go",
    "content": "package kata\n\nimport (\n\t\"container/list\"\n\t\"sort\"\n)\n\nfunc smallerNumbersThanCurrent(nums []int) []int {\n\n\tcounterList := make(map[int]*list.List, len(nums))\n\tfor i, n := range nums {\n\t\tl := counterList[n]\n\t\tif l == nil {\n\t\t\tl = new(list.List)\n\t\t\tl.PushFront(i)\n\t\t\tcounterList[n] = l\n\t\t} else {\n\t\t\tl.PushFront(i)\n\t\t}\n\t}\n\n\tsort.Slice(nums, func(i, j int) bool {\n\t\treturn nums[i] > nums[j]\n\t})\n\n\tcounter := make([]int, len(nums))\n\tfor i := 0; i < len(nums); i++ {\n\t\tc := len(nums) - i - counterList[nums[i]].Len()\n\t\te := counterList[nums[i]].Front()\n\t\tcounter[e.Value.(int)] = c\n\t\tcounterList[nums[i]].Remove(e)\n\t}\n\n\treturn counter\n}\n"
  },
  {
    "path": "Immediate Food Delivery I/q.sql",
    "content": "SELECT ROUND((SELECT COUNT(*) FROM Delivery AS d2 WHERE d2.order_date = d2.customer_pref_delivery_date)/COUNT(*)*100, 2) AS immediate_percentage FROM Delivery AS d1;\n"
  },
  {
    "path": "Implement Magic Dictionary/kata.go",
    "content": "package Implement_Magic_Dictionary\n\ntype MagicDictionary struct {\n\twords map[int][]string\n}\n\nfunc Constructor() MagicDictionary {\n\treturn MagicDictionary{\n\t\twords: nil,\n\t}\n}\n\nfunc (this *MagicDictionary) BuildDict(dictionary []string) {\n\twords := make(map[int][]string, 0)\n\tfor _, word := range dictionary {\n\t\t_, ok := words[len(word)]\n\t\tif !ok {\n\t\t\twords[len(word)] = []string{}\n\t\t}\n\n\t\twords[len(word)] = append(words[len(word)], word)\n\t}\n\n\tthis.words = words\n}\n\nfunc (this *MagicDictionary) Search(searchWord string) bool {\n\tws, ok := this.words[len(searchWord)]\n\tif !ok {\n\t\treturn false\n\t}\nouter:\n\tfor _, word := range ws {\n\t\tif word == searchWord {\n\t\t\tcontinue\n\t\t}\n\n\t\tif len(word) == 1 {\n\t\t\treturn true\n\t\t}\n\n\t\tc := 0\n\t\tfor i := 0; i < len(searchWord); i++ {\n\t\t\tif searchWord[i] != word[i] {\n\t\t\t\tc++\n\t\t\t}\n\t\t\tif c > 1 {\n\t\t\t\tcontinue outer\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "Implement Queue using Stacks/kata.go",
    "content": "package kata\n\ntype MyQueue struct {\n\tlist []int\n}\n\n/** Initialize your data structure here. */\nfunc Constructor() MyQueue {\n\treturn MyQueue{\n\t\tlist: make([]int, 0),\n\t}\n}\n\n/** Push element x to the back of queue. */\nfunc (this *MyQueue) Push(x int) {\n\tthis.list = append([]int{x}, this.list...)\n}\n\n/** Removes the element from in front of queue and returns that element. */\nfunc (this *MyQueue) Pop() int {\n\tv := this.list[len(this.list)-1]\n\tthis.list = this.list[:len(this.list)-1]\n\treturn v\n}\n\n/** Get the front element. */\nfunc (this *MyQueue) Peek() int {\n\treturn this.list[len(this.list)-1]\n}\n\n/** Returns whether the queue is empty. */\nfunc (this *MyQueue) Empty() bool {\n\tif len(this.list) == 0 {\n\t\treturn true\n\t}\n\treturn false\n}\n\n/**\n * Your MyQueue object will be instantiated and called as such:\n * obj := Constructor();\n * obj.Push(x);\n * param_2 := obj.Pop();\n * param_3 := obj.Peek();\n * param_4 := obj.Empty();\n */\n"
  },
  {
    "path": "Implement Stack using Queues/kata.go",
    "content": "package kata\n\ntype MyStack struct {\n\tvalues []int\n}\n\n/** Initialize your data structure here. */\nfunc Constructor() MyStack {\n\treturn MyStack{\n\t\tvalues: make([]int, 0),\n\t}\n}\n\n/** Push element x onto stack. */\nfunc (this *MyStack) Push(x int) {\n\tthis.values = append(this.values, x)\n}\n\n/** Removes the element on top of the stack and returns that element. */\nfunc (this *MyStack) Pop() int {\n\tv := this.values[len(this.values)-1]\n\tthis.values = this.values[:len(this.values)-1]\n\treturn v\n}\n\n/** Get the top element. */\nfunc (this *MyStack) Top() int {\n\treturn this.values[len(this.values)-1]\n}\n\n/** Returns whether the stack is empty. */\nfunc (this *MyStack) Empty() bool {\n\treturn len(this.values) == 0\n}\n\n/**\n * Your MyStack object will be instantiated and called as such:\n * obj := Constructor();\n * obj.Push(x);\n * param_2 := obj.Pop();\n * param_3 := obj.Top();\n * param_4 := obj.Empty();\n */\n"
  },
  {
    "path": "Implement Trie (Prefix Tree)/kata.go",
    "content": "package kata\n\ntype node struct {\n\tVal   rune\n\tword  bool\n\tnodes map[rune]*node\n}\n\ntype Trie struct {\n\tnode map[rune]*node\n}\n\n/** Initialize your data structure here. */\nfunc Constructor() Trie {\n\treturn Trie{}\n}\n\n/** Inserts a word into the trie. */\nfunc (this *Trie) Insert(word string) {\n\tvar current *node\n\tv, ok := this.node[rune(word[0])]\n\tif ok {\n\t\tcurrent = v\n\t} else {\n\t\tif this.node == nil {\n\t\t\tthis.node = make(map[rune]*node)\n\t\t}\n\t\tn := &node{Val: rune(word[0]), nodes: make(map[rune]*node)}\n\t\tthis.node[rune(word[0])] = n\n\t\tcurrent = n\n\t}\n\tfor _, c := range word[1:] {\n\t\tv, ok := current.nodes[c]\n\t\tif ok {\n\t\t\tcurrent = v\n\t\t} else {\n\t\t\tn := &node{Val: c, nodes: make(map[rune]*node)}\n\t\t\tcurrent.nodes[c] = n\n\t\t\tcurrent = n\n\t\t}\n\t}\n\tcurrent.word = true\n}\n\n/* Returs if the word is in the trie. */\nfunc (this *Trie) Search(word string) bool {\n\tif this.node == nil {\n\t\treturn false\n\t}\n\tif len(word) == 0 {\n\t\treturn false\n\t}\n\tvar current *node\n\tv, ok := this.node[rune(word[0])]\n\tif ok {\n\t\tcurrent = v\n\t} else {\n\t\treturn false\n\t}\n\tfor _, c := range word[1:] {\n\t\tv, ok := current.nodes[c]\n\t\tif ok {\n\t\t\tcurrent = v\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn current.word\n}\n\n/** Returns if there is any word in the trie that starts with the given prefix. */\nfunc (this *Trie) StartsWith(prefix string) bool {\n\tif this.node == nil {\n\t\treturn false\n\t}\n\tif len(prefix) == 0 {\n\t\treturn false\n\t}\n\tvar current *node\n\tv, ok := this.node[rune(prefix[0])]\n\tif ok {\n\t\tcurrent = v\n\t} else {\n\t\treturn false\n\t}\n\tfor _, c := range prefix[1:] {\n\t\tv, ok := current.nodes[c]\n\t\tif ok {\n\t\t\tcurrent = v\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n/**\n * Your Trie object will be instantiated and called as such:\n * obj := Constructor();\n * obj.Insert(word);\n * param_2 := obj.Search(word);\n * param_3 := obj.StartsWith(prefix);\n */\n"
  },
  {
    "path": "Implement strStr()/kata.go",
    "content": "package kata\n\nfunc strStr(haystack string, needle string) (idx int) {\n\tif haystack == needle {\n\t\treturn 0\n\t}\n\tidx = -1\n\tfor i := 0; i < len(haystack); i++ {\n\n\t\tif (i + len(needle)) > len(haystack) {\n\t\t\treturn\n\t\t}\n\n\t\tif haystack[i:i+len(needle)] == needle {\n\t\t\tidx = i\n\t\t\treturn\n\t\t}\n\t}\n\treturn\n}\n"
  },
  {
    "path": "Increasing Order Search Tree/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc increasingBST(root *TreeNode) *TreeNode {\n\tnodes := inorderTraversal(root)\n\ttmp := &TreeNode{}\n\tcurrent := tmp\n\tfor _, n := range nodes {\n\t\tif current.Right == nil {\n\t\t\tcurrent.Right = &TreeNode{Val: n}\n\t\t}\n\t\tcurrent = current.Right\n\t}\n\treturn tmp.Right\n}\n\nfunc inorderTraversal(root *TreeNode) []int {\n\tlist := make([]int, 0)\n\tinorder(root, &list)\n\treturn list\n}\n\nfunc inorder(node *TreeNode, list *[]int) {\n\tif node == nil {\n\t\treturn\n\t}\n\tif node.Left != nil {\n\t\tinorder(node.Left, list)\n\t}\n\t*list = append(*list, node.Val)\n\tif node.Right != nil {\n\t\tinorder(node.Right, list)\n\t}\n}\n"
  },
  {
    "path": "Index Pairs of a String/kata.java",
    "content": "class Solution {\n    public int[][] indexPairs(String text, String[] words) {\n        var list = new ArrayList<ArrayList<Integer>>();\n        for (var i = 0; i < text.length(); i++) {\n            for (var word: words) {\n                if ((i+word.length()) <= text.length()) {\n                    if (text.substring(i, i+word.length()).equals(word)) {\n                        final var index = i;\n                        list.add(new ArrayList<Integer>(){{\n                            add(index);\n                            add(index+word.length()-1);\n                        }});\n                    }\n                }\n            }\n        }\n\n        Collections.sort(list, new Comparator<ArrayList<Integer>>() {\n            public int compare(ArrayList<Integer> a, ArrayList<Integer> b) {\n                if (a.get(0) == b.get(0)) {\n                    if (a.get(1) == b.get(1)) {\n                        return 0;\n                    } else if (a.get(1) < b.get(1)) {\n                        return -1;\n                    } else {\n                        return 1;\n                    }\n                } else if (a.get(0) < b.get(0)) {\n                        return -1;\n                } else {\n                    return 1;\n                }\n            }\n        });\n\n\n        var res = new int[list.size()][2];\n        var i = 0;\n        for (var element : list) {\n            res[i] = new int[]{element.get(0), element.get(1)};\n            i++;\n        }\n\n        return res;\n    }\n\n}"
  },
  {
    "path": "Insertion Sort List/kata.go",
    "content": "package kata\n\n/**\n * Definition for singly-linked list.\n * type ListNode struct {\n *     Val int\n *     Next *ListNode\n * }\n */\nfunc insertionSortList(head *ListNode) *ListNode {\n\tif head == nil {\n\t\treturn nil\n\t}\n\tif head.Next == nil {\n\t\treturn head\n\t}\n\tnodes := make([]*ListNode, 0)\n\tcurrent := head\n\tfor current != nil {\n\t\tnodes = append(nodes, current)\n\t\tcurrent = current.Next\n\t}\n\tInsertionsort(nodes)\n\treturn head\n}\n\nfunc Insertionsort(a []*ListNode) {\n\tfor j := 1; j < len(a); j++ {\n\t\tkey := a[j].Val\n\t\ti := j - 1\n\t\tfor i >= 0 && a[i].Val > key {\n\t\t\ta[i+1].Val = a[i].Val\n\t\t\ti = i - 1\n\t\t}\n\t\ta[i+1].Val = key\n\t}\n}\n"
  },
  {
    "path": "Intersection of Multiple Arrays/kata.go",
    "content": "package Intersection_of_Multiple_Arrays\n\nimport \"sort\"\n\nfunc intersection(nums [][]int) []int {\n\tset := make(map[int]int)\n\tfor _, vec := range nums {\n\t\tfor _, n := range vec {\n\t\t\tset[n]++\n\t\t}\n\t}\n\n\tvec := make([]int, 0)\n\tfor n, c := range set {\n\t\tif c == len(nums) {\n\t\t\tvec = append(vec, n)\n\t\t}\n\t}\n\n\tif len(vec) != 0 {\n\t\tsort.Ints(vec)\n\t}\n\n\treturn vec\n}\n"
  },
  {
    "path": "Intersection of Three Sorted Arrays/kata.go",
    "content": "package kata\n\nfunc arraysIntersection(arr1 []int, arr2 []int, arr3 []int) []int {\n\n\tres := make([]int, 0)\n\tvar j, k int\n\tfor i := 0; i < len(arr1); {\n\t\tif k == len(arr3) || j == len(arr2) || i == len(arr1) {\n\t\t\tbreak\n\t\t}\n\n\t\tif arr1[i] == arr2[j] && arr2[j] == arr3[k] {\n\t\t\tres = append(res, arr2[j])\n\t\t\tj++\n\t\t\ti++\n\t\t\tk++\n\t\t\tcontinue\n\t\t}\n\n\t\tif arr3[k] > arr1[i] && arr3[k] > arr2[j] {\n\t\t\tj++\n\t\t\ti++\n\t\t\tcontinue\n\t\t} else if arr2[j] > arr1[i] && arr2[j] > arr3[k] {\n\t\t\ti++\n\t\t\tk++\n\t\t\tcontinue\n\t\t} else if arr1[i] > arr3[k] && arr1[i] > arr2[j] {\n\t\t\tj++\n\t\t\tk++\n\t\t\tcontinue\n\t\t} else if arr3[k] > arr1[i] {\n\t\t\ti++\n\t\t\tcontinue\n\t\t} else if arr3[k] > arr2[j] {\n\t\t\tj++\n\t\t\tcontinue\n\t\t} else if arr2[j] > arr1[i] {\n\t\t\ti++\n\t\t\tcontinue\n\t\t} else if arr2[j] > arr3[k] {\n\t\t\tk++\n\t\t\tcontinue\n\t\t} else if arr1[i] > arr3[k] {\n\t\t\tk++\n\t\t\tcontinue\n\t\t} else if arr1[i] > arr2[j] {\n\t\t\tj++\n\t\t\tcontinue\n\t\t}\n\t}\n\n\treturn res\n}\n"
  },
  {
    "path": "Intersection of Two Arrays/kata.go",
    "content": "package kata\n\nfunc intersection(nums1 []int, nums2 []int) []int {\n\tseen := make(map[int]int)\n\tfor i := 0; i < len(nums1); i++ {\n\t\tseen[nums1[i]] = 1\n\t}\n\tinter := make([]int, 0)\n\tfor i := 0; i < len(nums2); i++ {\n\t\tcounter, ok := seen[nums2[i]]\n\t\tif ok && counter == 1 {\n\t\t\tseen[nums2[i]] = seen[nums2[i]] + 1\n\t\t\tinter = append(inter, nums2[i])\n\t\t}\n\t}\n\treturn inter\n}\n"
  },
  {
    "path": "Intersection of Two Arrays II/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc intersect(nums1 []int, nums2 []int) []int {\n\tintersection := make(map[int]int)\n\tfor i := 0; i < len(nums1); i++ {\n\t\tintersection[nums1[i]] = intersection[nums1[i]] + 1\n\t}\n\ty := make([]int, 0)\n\tfor i := 0; i < len(nums2); i++ {\n\t\tc, ok := intersection[nums2[i]]\n\t\tif ok && c > 0 {\n\t\t\tintersection[nums2[i]] = intersection[nums2[i]] - 1\n\t\t\ty = append(y, nums2[i])\n\t\t}\n\t}\n\tsort.Slice(y, func(i, j int) bool {\n\t\treturn y[i] < y[j]\n\t})\n\treturn y\n}\n"
  },
  {
    "path": "Intersection of Two Linked Lists/kata.go",
    "content": "package kata\n\n/**\n * Definition for singly-linked list.\n * type ListNode struct {\n *     Val int\n *     Next *ListNode\n * }\n */\nfunc getIntersectionNode(headA, headB *ListNode) *ListNode {\n\tif headA == nil || headB == nil {\n\t\treturn nil\n\t}\n\n\ttable := make(map[*ListNode]struct{}, 0)\n\tcurrent := headA\n\tfor current != nil {\n\t\ttable[current] = struct{}{}\n\t\tcurrent = current.Next\n\t}\n\n\tcurrent = headB\n\tfor current != nil {\n\t\tif _, ok := table[current]; ok {\n\t\t\treturn current\n\t\t}\n\t\tcurrent = current.Next\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "Invalid Tweets/q.sql",
    "content": "SELECT tweet_id FROM Tweets WHERE CHAR_LENGTH(content) > 15;"
  },
  {
    "path": "Invert Binary Tree/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc invertTree(root *TreeNode) *TreeNode {\n\tswap(root)\n\treturn root\n}\n\nfunc swap(node *TreeNode) {\n\tif node == nil {\n\t\treturn\n\t}\n\n\tif node.Left != nil && node.Right != nil {\n\t\tnode.Left, node.Right = node.Right, node.Left\n\t\tswap(node.Right)\n\t\tswap(node.Left)\n\t\treturn\n\t}\n\n\tif node.Left != nil {\n\t\tnode.Right = node.Left\n\t\tnode.Left = nil\n\t\tswap(node.Right)\n\t\treturn\n\t}\n\n\tif node.Right != nil {\n\t\tnode.Left = node.Right\n\t\tnode.Right = nil\n\t\tswap(node.Left)\n\t\treturn\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "Is Object Empty/kata.js",
    "content": "\n/**\n * @param {Object|Array} obj\n * @return {boolean}\n */\nvar isEmpty = function(obj) {\n    if (Array.isArray(obj)) {\n        return obj.length == 0\n    } else {\n        return Object.keys(obj).length == 0\n    }\n};"
  },
  {
    "path": "Is Subsequence/kata.go",
    "content": "package kata\n\nfunc isSubsequence(s string, t string) bool {\n\tsub := make([]byte, len(s))\n\tvar i int\n\tfor j := 0; j < len(t); j++ {\n\t\tif i == len(s) {\n\t\t\tbreak\n\t\t}\n\t\tif s[i] == t[j] {\n\t\t\tsub[i] = s[i]\n\t\t\ti++\n\t\t}\n\t}\n\tif string(sub) == s {\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "Island Perimeter/kata.go",
    "content": "package Island_Perimeter\n\nfunc islandPerimeter(grid [][]int) int {\n\tvar sum int\n\tfor i := 0; i < len(grid); i++ {\n\t\tfor j := 0; j < len(grid[i]); j++ {\n\n\t\t\tif grid[i][j] == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tleft := j - 1\n\n\t\t\tif left >= 0 && grid[i][left] == 0 {\n\t\t\t\tsum++\n\t\t\t} else if left < 0 {\n\t\t\t\tsum++\n\t\t\t}\n\n\t\t\tright := j + 1\n\t\t\tif right < len(grid[i]) && grid[i][right] == 0 {\n\t\t\t\tsum++\n\t\t\t} else if right == len(grid[i]) {\n\t\t\t\tsum++\n\t\t\t}\n\n\t\t\tup := i - 1\n\t\t\tif up >= 0 && grid[up][j] == 0 {\n\t\t\t\tsum++\n\t\t\t} else if up < 0 {\n\t\t\t\tsum++\n\t\t\t}\n\n\t\t\tdown := i + 1\n\t\t\tif down < len(grid) && grid[down][j] == 0 {\n\t\t\t\tsum++\n\t\t\t} else if down == len(grid) {\n\t\t\t\tsum++\n\t\t\t}\n\t\t}\n\t}\n\n\treturn sum\n}\n"
  },
  {
    "path": "Jewels and Stones/kata.go",
    "content": "package kata\n\nfunc numJewelsInStones(J string, S string) int {\n\tset := make(map[byte]bool, len(J))\n\tfor i := 0; i < len(J); i++ {\n\t\tset[J[i]] = true\n\t}\n\tvar counter int\n\tfor i := 0; i < len(S); i++ {\n\t\tok := set[S[i]]\n\t\tif ok {\n\t\t\tcounter++\n\t\t}\n\t}\n\treturn counter\n}\n"
  },
  {
    "path": "K Items With the Maximum Sum/kata.go",
    "content": "package kata\n\nfunc kItemsWithMaximumSum(numOnes int, numZeros int, numNegOnes int, k int) int {\n\tvar sum int\n\tif numOnes >= k {\n\t\tsum += 1 * k\n\t\treturn sum\n\t} else if numOnes > 0 {\n\t\tsum += numOnes * 1\n\t\tk = k - numOnes\n\t}\n\tif numZeros >= k {\n\t\treturn sum\n\t} else if numZeros > 0 {\n\t\tk = k - numZeros\n\t}\n\tif numNegOnes >= k {\n\t\tsum += -1 * k\n\t\treturn sum\n\t} else if numNegOnes > 0 {\n\t\tsum += -1 * numNegOnes\n\t}\n\treturn sum\n}\n"
  },
  {
    "path": "K Radius Subarray Averages/kata.go",
    "content": "package K_Radius_Subarray_Averages\n\nfunc getAverages(nums []int, k int) []int {\n\n\tif k == 0 {\n\t\treturn nums\n\t}\n\n\tout := make([]int, len(nums))\n\tfor i := 0; i < len(nums); i++ {\n\t\tout[i] = -1\n\t}\n\n\tif k > len(nums) || (k+k) >= len(nums) {\n\t\treturn out\n\t}\n\n\tvar sum int\n\tvar c int\n\tfor i := 0; i < k+k+1; i++ {\n\t\tsum += nums[i]\n\t\tc++\n\t}\n\n\tavg := sum / c\n\tout[k] = avg\n\n\tfor i := k + 1; i < len(nums); i++ {\n\t\tif i+k >= len(nums) {\n\t\t\tbreak\n\t\t}\n\n\t\tsum += nums[i+k]\n\t\tsum -= nums[i-k-1]\n\t\tout[i] = sum / c\n\t}\n\n\treturn out\n}\n"
  },
  {
    "path": "Keep Multiplying Found Values by Two/kata.go",
    "content": "package Keep_Multiplying_Found_Values_by_Two\n\nfunc findFinalValue(nums []int, original int) int {\n\n\tvar i int\n\tfor {\n\t\ti = i % len(nums)\n\t\tn := nums[i]\n\t\tif n == original {\n\t\t\ti = 0\n\t\t\toriginal = original * 2\n\t\t\tcontinue\n\t\t}\n\t\ti++\n\t\tif i == len(nums) {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn original\n}\n"
  },
  {
    "path": "Kids With the Greatest Number of Candies/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc kidsWithCandies(candies []int, extraCandies int) []bool {\n\tmax := int(math.Inf(1))\n\tfor _, count := range candies {\n\t\tif max == int(math.Inf(1)) || count > max {\n\t\t\tmax = count\n\t\t}\n\t}\n\tfacts := make([]bool, len(candies))\n\tfor i, count := range candies {\n\t\tif (count + extraCandies) >= max {\n\t\t\tfacts[i] = true\n\t\t}\n\t}\n\n\treturn facts\n}\n"
  },
  {
    "path": "Kth Distinct String in an Array/kata.go",
    "content": "package kata\n\nfunc kthDistinct(arr []string, k int) string {\n\n\tdistinct := make(map[string]int)\n\tfor _, a := range arr {\n\t\tdistinct[a]++\n\t}\n\n\tif len(distinct) < k {\n\t\treturn \"\"\n\t}\n\n\ti := 1\n\tfor _, a := range arr {\n\t\tif distinct[a] == 1 {\n\t\t\tif i == k {\n\t\t\t\treturn a\n\t\t\t}\n\t\t\ti++\n\t\t}\n\t}\n\n\treturn \"\"\n}\n"
  },
  {
    "path": "Kth Largest Element in a Stream/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\ntype KthLargest struct {\n\tk    int\n\tnums []int\n}\n\nfunc Constructor(k int, nums []int) KthLargest {\n\treturn KthLargest{\n\t\tk:    k,\n\t\tnums: nums,\n\t}\n}\n\nfunc (this *KthLargest) Add(val int) int {\n\tthis.nums = append(this.nums, val)\n\tsort.Slice(this.nums, func(i, j int) bool {\n\t\treturn this.nums[i] < this.nums[j]\n\t})\n\treturn this.nums[len(this.nums)-this.k]\n}\n\n/**\n * Your KthLargest object will be instantiated and called as such:\n * obj := Constructor(k, nums);\n * param_1 := obj.Add(val);\n */\n"
  },
  {
    "path": "Kth Largest Element in an Array/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc findKthLargest(nums []int, k int) int {\n\tif len(nums) == 1 {\n\t\treturn nums[0]\n\t}\n\tsort.Slice(nums, func(i, j int) bool {\n\t\treturn nums[i] < nums[j]\n\t})\n\treturn nums[len(nums)-k]\n}\n"
  },
  {
    "path": "Kth Missing Positive Number/kata.go",
    "content": "package kata\n\nfunc findKthPositive(arr []int, k int) int {\n\n\tlastN := 0\n\tmissingNumbers := 0\n\tfor i := 0; i < len(arr); i++ {\n\n\t\tdiff := (arr[i]) - lastN\n\t\tif diff > 1 {\n\t\t\tmissingNumbers++\n\t\t\tlastN++\n\t\t\ti--\n\t\t\tif missingNumbers == k {\n\t\t\t\treturn lastN\n\t\t\t}\n\n\t\t\tcontinue\n\t\t}\n\n\t\tlastN = arr[i]\n\t}\n\n\treturn len(arr) + k\n}\n"
  },
  {
    "path": "Kth Smallest Element in a BST/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc kthSmallest(root *TreeNode, k int) int {\n\tif root == nil {\n\t\treturn -1\n\t}\n\tlist := make([]int, 0)\n\tinorder(root, &list, k)\n\treturn list[k-1]\n}\n\nfunc inorder(node *TreeNode, list *[]int, k int) {\n\tif k == len(*list) {\n\t\treturn\n\t}\n\tif node == nil {\n\t\treturn\n\t}\n\tif node.Left != nil {\n\t\tinorder(node.Left, list, k)\n\t}\n\t*list = append(*list, node.Val)\n\tif node.Right != nil {\n\t\tinorder(node.Right, list, k)\n\t}\n}\n"
  },
  {
    "path": "LRU Cache/kata.go",
    "content": "package LRU_Cache\n\nimport (\n\t\"time\"\n)\n\ntype element struct {\n\tvalue int\n\ttime  int64\n}\n\ntype LRUCache struct {\n\telements map[int]*element\n\tcapacity int\n}\n\nfunc Constructor(capacity int) LRUCache {\n\treturn LRUCache{\n\t\telements: make(map[int]*element),\n\t\tcapacity: capacity,\n\t}\n}\n\nfunc (this *LRUCache) Get(key int) int {\n\n\telement, ok := this.elements[key]\n\tif !ok {\n\t\treturn -1\n\t}\n\n\telement.time = time.Now().UnixNano()\n\n\tthis.elements[key] = element\n\n\treturn element.value\n}\n\nfunc (this *LRUCache) Put(key int, value int) {\n\n\te, ok := this.elements[key]\n\tif !ok {\n\t\tif len(this.elements) == this.capacity {\n\n\t\t\tmax := int64(-1)\n\t\t\tfoundKey := -1\n\t\t\tfor key, value := range this.elements {\n\t\t\t\tif max == -1 || max > value.time {\n\t\t\t\t\tfoundKey = key\n\t\t\t\t\tmax = value.time\n\t\t\t\t}\n\t\t\t}\n\t\t\tdelete(this.elements, foundKey)\n\t\t}\n\n\t\tthis.elements[key] = &element{value: value, time: time.Now().UnixNano()}\n\t\treturn\n\t}\n\n\te.value = value\n\te.time = time.Now().UnixNano()\n\n\tthis.elements[key] = e\n}\n\n/**\n * Your LRUCache object will be instantiated and called as such:\n * obj := Constructor(capacity);\n * param_1 := obj.Get(key);\n * obj.Put(key,value);\n */\n"
  },
  {
    "path": "Largest 3-Same-Digit Number in String/kata.go",
    "content": "package Largest_3_Same_Digit_Number_in_String\n\nfunc largestGoodInteger(num string) string {\n\n\tk := -1\n\twindow := \"\"\n\tfor i := 2; i < len(num); i++ {\n\t\tif num[i] == num[i-1] && num[i-1] == num[i-2] && k < int(num[i]-48) {\n\t\t\twindow = num[i-2 : i+1]\n\t\t\tk = int(num[i] - 48)\n\t\t}\n\t}\n\n\treturn window\n}\n"
  },
  {
    "path": "Largest Number After Digit Swaps by Parity/kata.go",
    "content": "package Largest_Number_After_Digit_Swaps_by_Parity\n\nimport (\n\t\"container/heap\"\n\t\"math\"\n)\n\nfunc largestInteger(num int) int {\n\n\todd := &IntHeap{}\n\teven := &IntHeap{}\n\n\tvar i int\n\n\tvar bitSet int\n\n\tfor {\n\t\tn := num % 10\n\t\tnum = num / 10\n\t\tif n%2 == 0 {\n\t\t\teven.Push(n)\n\t\t\tif bitSet&(1<<i) == 0 {\n\t\t\t\tbitSet |= 1 << i\n\t\t\t}\n\t\t} else {\n\t\t\todd.Push(n)\n\t\t\tif bitSet&(1<<i) > 0 {\n\t\t\t\tbitSet ^= 1 << i\n\t\t\t}\n\t\t}\n\n\t\tif num == 0 {\n\t\t\tbreak\n\t\t}\n\n\t\ti++\n\t}\n\theap.Init(odd)\n\theap.Init(even)\n\n\tnum = 0\n\tu := int(math.Pow(10, float64(i)))\n\tfor ; i >= 0; i-- {\n\n\t\tif (bitSet & (1 << i)) == 0 {\n\t\t\tnum += heap.Pop(odd).(int) * u\n\t\t} else {\n\t\t\tnum += heap.Pop(even).(int) * u\n\t\t}\n\n\t\tu = u / 10\n\t}\n\n\treturn num\n}\n\ntype IntHeap []int\n\nfunc (h IntHeap) Len() int {\n\treturn len(h)\n}\n\nfunc (h IntHeap) Less(i, j int) bool {\n\treturn h[i] > h[j]\n}\n\nfunc (h IntHeap) Swap(i, j int) {\n\tif h.Len() < 2 {\n\t\treturn\n\t}\n\n\th[i], h[j] = h[j], h[i]\n}\n\nfunc (h *IntHeap) Push(x interface{}) {\n\t*h = append(*h, x.(int))\n}\n\nfunc (h *IntHeap) Pop() interface{} {\n\told := *h\n\tn := len(old)\n\tif n == 0 {\n\t\treturn -1\n\t}\n\tx := old[n-1]\n\t*h = old[0 : n-1]\n\treturn x\n}\n"
  },
  {
    "path": "Largest Number At Least Twice of Others/kata.go",
    "content": "package kata\n\nfunc dominantIndex(nums []int) int {\n\tvar index int\n\tvar max int\n\tvar i int\n\tfor i = 0; i < len(nums); i++ {\n\t\tif (max * 2) <= nums[i] {\n\t\t\tmax = nums[i]\n\t\t\tindex = i\n\t\t}\n\t}\n\tfor i = 0; i < len(nums); i++ {\n\t\tif max != nums[i] && max < (2*nums[i]) {\n\t\t\treturn -1\n\t\t}\n\t}\n\treturn index\n}\n"
  },
  {
    "path": "Largest Perimeter Triangle/kata.go",
    "content": "package Largest_Perimeter_Triangle\n\nimport \"sort\"\n\nfunc largestPerimeter(nums []int) int {\n\tsort.Ints(nums)\n\n\tfor i := len(nums) - 1; i >= 2; i-- {\n\t\ta := nums[i-1] + nums[i]\n\t\tb := nums[i-2] + nums[i-1]\n\t\tc := nums[i-2] + nums[i]\n\t\tif a > nums[i-2] && b > nums[i] && c > nums[i-1] {\n\t\t\treturn nums[i-2] + nums[i-1] + nums[i]\n\t\t}\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "Largest Positive Integer That Exists With Its Negative/kata.java",
    "content": "import java.util.Arrays;\nimport java.util.Comparator;\n\nclass Solution {\n    public int findMaxK(int[] nums) {\n\n        Integer[] boxedNums = new Integer[nums.length];\n        for (int i = 0; i < nums.length; i++) {\n            boxedNums[i] = nums[i];\n        }\n\n        Arrays.sort(boxedNums, new Comparator<Integer>() {\n            @Override\n            public int compare(Integer n1, Integer n2) {\n                if (n2 < 0) {\n                    n2 = n2 * -1;\n                }\n                if (n1 < 0) {\n                    n1 = n1 * -1;\n                }\n                return Integer.compare(n1, n2);\n            }\n        });\n\n        var i = nums.length - 2;\n        var k = -1;\n        for (; i >= 0; i--) {\n            var j = i+1;\n            if (boxedNums[j].intValue() == boxedNums[i].intValue()) {\n                continue;\n            }\n\n            var ni = boxedNums[i];\n            if (boxedNums[i] < 0) {\n                ni = ni * -1;\n            }\n\n            var nj = boxedNums[j];\n            if (boxedNums[j] < 0) {\n                nj = nj * -1;\n            }\n\n            if (nj.intValue() == ni.intValue()) {\n                return nj;\n            }\n        }\n\n        return k;\n    }\n}"
  },
  {
    "path": "Largest Subarray Length K/kata.java",
    "content": "class Solution {\n    public int[] largestSubarray(int[] nums, int k) {\n        var max = 0l;\n        var res = new int[k];\n        var index = 0;\n        for (var i = 0; i < nums.length-k+1; i++) {\n            var localMax = nums[i];\n            if (localMax > max) {\n                max = localMax;\n                index = i;\n            }\n        }\n\n        var j = 0;\n        for (var i = index; i < index+k; i++) {\n            res[j] = nums[i];\n            j++;\n        }\n\n        return res;\n    }\n}"
  },
  {
    "path": "Largest Unique Number/kata.go",
    "content": "package Largest_Unique_Number\n\nimport \"sort\"\n\nfunc largestUniqueNumber(nums []int) int {\n\tif len(nums) == 1 {\n\t\treturn nums[0]\n\t}\n\n\tsort.Slice(nums, func(i, j int) bool {\n\t\treturn nums[i] > nums[j]\n\t})\n\n\tfor i := 1; i < len(nums); i++ {\n\t\tif i > 1 && (nums[i-1] == nums[i-2]) {\n\t\t\tcontinue\n\t\t} else if nums[i-1] == nums[i] {\n\t\t\ti++\n\t\t\tcontinue\n\t\t} else {\n\t\t\treturn nums[i-1]\n\t\t}\n\t}\n\n\tif len(nums)%2 == 1 {\n\t\treturn nums[len(nums)-1]\n\t}\n\n\treturn -1\n}\n"
  },
  {
    "path": "Last Person to Fit in the Bus/q.sql",
    "content": "WITH cte AS\n(\n   SELECT\n      person_name,\n      SUM(weight) OVER (\n   ORDER BY\n      turn ROWS UNBOUNDED PRECEDING) AS running_total\n   FROM\n      Queue\n)\n\nSELECT\n   person_name\nFROM\n   cte\nWHERE\n   running_total <= 1000 ORDER BY running_total DESC LIMIT 1;\n"
  },
  {
    "path": "Last Stone Weight/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc lastStoneWeight(stones []int) int {\n\tif len(stones) == 1 {\n\t\treturn stones[0]\n\t}\n\n\tfor len(stones) != 0 && len(stones) != 1 {\n\t\tif !sort.IntsAreSorted(stones) {\n\t\t\tsort.Ints(stones)\n\t\t}\n\t\tdiff := stones[len(stones)-1] - stones[len(stones)-2]\n\t\tstones = stones[:len(stones)-2]\n\t\tif diff > 0 {\n\t\t\tstones = append(stones, diff)\n\t\t}\n\t}\n\tif len(stones) == 1 {\n\t\treturn stones[0]\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "Latest Time by Replacing Hidden Digits/kata.go",
    "content": "package kata\n\nfunc maximumTime(time string) string {\n\n\tb := []byte(time)\n\n\tif b[0] == '?' && (b[1] >= '4' && b[1] <= '9') {\n\t\tb[0] = '1'\n\t} else if b[0] == '?' {\n\t\tb[0] = '2'\n\t}\n\n\tif b[1] == '?' && (b[0] == '0' || b[0] == '1') {\n\t\tb[1] = '9'\n\t} else if b[1] == '?' {\n\t\tb[1] = '3'\n\t}\n\n\tif b[3] == '?' {\n\t\tb[3] = '5'\n\t}\n\n\tif b[4] == '?' {\n\t\tb[4] = '9'\n\t}\n\n\treturn string(b)\n}\n"
  },
  {
    "path": "Leaf-Similar Trees/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc leafSimilar(root1 *TreeNode, root2 *TreeNode) bool {\n\tif root1 == nil && root2 == nil {\n\t\treturn true\n\t}\n\tif root1 == nil || root2 == nil {\n\t\treturn false\n\t}\n\tvalues1 := make([]int, 0)\n\tvalues2 := make([]int, 0)\n\tPickLeafValues(root1, &values2)\n\tPickLeafValues(root2, &values1)\n\tif len(values2) != len(values1) {\n\t\treturn false\n\t}\n\tfor i := 0; i < len(values1); i++ {\n\t\tif values1[i] != values2[i] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc PickLeafValues(node *TreeNode, values *[]int) {\n\tif node != nil && node.Left == nil && node.Right == nil {\n\t\t*values = append(*values, node.Val)\n\t\treturn\n\t}\n\tif node == nil {\n\t\treturn\n\t}\n\tif node.Left != nil {\n\t\tPickLeafValues(node.Left, values)\n\t}\n\tif node.Right != nil {\n\t\tPickLeafValues(node.Right, values)\n\t}\n}\n"
  },
  {
    "path": "Least Number of Unique Integers after K Removals/kata.java",
    "content": "class Solution {\n    public int findLeastNumOfUniqueInts(int[] arr, int k) {\n\n        Map<Integer, Integer> counter = new LinkedHashMap<>();\n        for (var num: arr) {\n            counter.put(num, counter.getOrDefault(num, 0)+1);\n        }\n\n        PriorityQueue<Integer> pq = new PriorityQueue<>();\n        counter.forEach((key, value) -> pq.add(value));\n\n        while(k != 0) {\n            var value = pq.poll();\n            value--;\n            if (value > 0) pq.add(value);\n            k--;\n        }\n\n        return pq.size();\n    }\n}"
  },
  {
    "path": "Left and Right Sum Differences/kata.java",
    "content": "class Solution {\n    public int[] leftRigthDifference(int[] nums) {\n        var res = new int[nums.length];\n        var j = nums.length-1;\n        var leftSum = 0;\n        var rightSum = 0;\n        for (var i = 0; i < nums.length-1; i++) {\n            leftSum += nums[i];\n            rightSum += nums[j];\n            if (res[i+1] > 0) {\n                res[i+1] -= leftSum;\n                res[i+1] = Math.abs(res[i+1]);\n            } else {\n                res[i+1] = leftSum;\n            }\n            if (res[j-1] > 0) {\n                res[j-1] -= rightSum;\n                res[j-1] = Math.abs(res[j-1]);\n            } else {\n                res[j-1] = rightSum;\n            }\n            j--;\n        }\n        return res;\n    }\n}"
  },
  {
    "path": "Length of Last Word/kata.go",
    "content": "package kata\n\nfunc lengthOfLastWord(s string) (lastWordCounter int) {\n\tif s == \"\" {\n\t\treturn 0\n\t}\n\tfor i := len(s) - 1; i >= 0; i-- {\n\t\tif s[i] == ' ' && lastWordCounter != 0 {\n\t\t\treturn\n\t\t}\n\t\tif s[i] != ' ' {\n\t\t\tlastWordCounter++\n\t\t}\n\t}\n\treturn\n}\n"
  },
  {
    "path": "Letter Case Permutation/kata.go",
    "content": "package kata\n\nfunc letterCasePermutation(S string) []string {\n\tpermutations := make([]string, 0)\n\tpermutations = append(permutations, string(permutation(&permutations, []byte(S), 0)))\n\treturn permutations\n}\n\nfunc permutation(permutations *[]string, b []byte, index int) []byte {\n\tif len(b) <= index {\n\t\treturn b\n\t}\n\tfor i := index; i < len(b); i++ {\n\t\tif b[i] >= 97 && b[i] <= 122 {\n\t\t\tb[i] = b[i] - 32\n\t\t\t*permutations = append(*permutations, string(permutation(permutations, b, i+1)))\n\t\t\tb[i] = b[i] + 32\n\t\t} else if b[i] >= 65 && b[i] <= 90 {\n\t\t\tb[i] = b[i] + 32\n\t\t\t*permutations = append(*permutations, string(permutation(permutations, b, i+1)))\n\t\t\tb[i] = b[i] - 32\n\t\t}\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "Lexicographical Numbers/kata.go",
    "content": "package kata\n\nimport (\n\t\"sort\"\n\t\"strconv\"\n)\n\nfunc lexicalOrder(n int) []int {\n\tnums := make([]int, n)\n\tfor i := 0; i < n; i++ {\n\t\tnums[i] = i + 1\n\t}\n\tsort.Slice(nums, func(i, j int) bool {\n\t\treturn strconv.Itoa(nums[i]) < strconv.Itoa(nums[j])\n\t})\n\treturn nums\n}\n"
  },
  {
    "path": "Linked List Cycle/kata.go",
    "content": "package kata\n\n/**\n * Definition for singly-linked list.\n * type ListNode struct {\n *     Val int\n *     Next *ListNode\n * }\n */\nfunc hasCycle(head *ListNode) bool {\n\tif head == nil {\n\t\treturn false\n\t}\n\tcurrent := head.Next\n\tif current == nil {\n\t\treturn false\n\t}\n\tcount := map[*ListNode]struct{}{}\n\tfor current != nil {\n\t\t_, ok := count[current]\n\t\tif ok {\n\t\t\treturn true\n\t\t}\n\t\tcount[current] = struct{}{}\n\t\tcurrent = current.Next\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "List the Products Ordered in a Period/q.sql",
    "content": "SELECT p.product_name,\n       Sum(o.unit) AS unit\nFROM   products AS p\n           INNER JOIN orders AS o\n                      ON o.product_id = p.product_id\nWHERE  Month(o.order_date) = 2\nGROUP  BY p.product_name,\n    Year(o.order_date),\n    Month(o.order_date)\nHAVING unit >= 100;"
  },
  {
    "path": "Longer Contiguous Segments of Ones than Zeros/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc checkZeroOnes(s string) bool {\n\n\tzeroCountMax := int(math.Inf(-1))\n\toneCountMax := int(math.Inf(-1))\n\tvar zeroCount int\n\tvar oneCount int\n\n\tfor i := 0; i < len(s); i++ {\n\t\tif zeroCountMax == int(math.Inf(-1)) || zeroCount > zeroCountMax {\n\t\t\tzeroCountMax = zeroCount\n\n\t\t}\n\n\t\tif oneCountMax == int(math.Inf(-1)) || oneCount > oneCountMax {\n\t\t\toneCountMax = oneCount\n\t\t}\n\n\t\tif s[i] == '0' {\n\t\t\toneCount = 0\n\t\t\tzeroCount++\n\n\t\t} else if s[i] == '1' {\n\t\t\tzeroCount = 0\n\t\t\toneCount++\n\t\t}\n\t\tif i == len(s)-1 {\n\n\t\t\tif zeroCountMax == int(math.Inf(-1)) || zeroCount > zeroCountMax {\n\t\t\t\tzeroCountMax = zeroCount\n\n\t\t\t}\n\n\t\t\tif oneCountMax == int(math.Inf(-1)) || oneCount > oneCountMax {\n\t\t\t\toneCountMax = oneCount\n\t\t\t}\n\t\t}\n\n\t}\n\treturn oneCountMax > zeroCountMax\n}\n"
  },
  {
    "path": "Longest Common Prefix/kata.go",
    "content": "package kata\n\nfunc longestCommonPrefix(strs []string) string {\n\tif len(strs) == 0 {\n\t\treturn \"\"\n\t}\n\tif len(strs) == 1 {\n\t\treturn strs[0]\n\t}\n\n\tmin := -1\n\tminString := \"\"\n\tfor _, s := range strs {\n\t\tif min == -1 || min > len(s) {\n\t\t\tmin = len(s)\n\t\t\tminString = s\n\t\t}\n\t}\n\tfor n := len(minString); n >= 0; n-- {\n\t\tif Has(strs, minString, n) {\n\t\t\treturn minString[:n]\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc Has(strs []string, minString string, n int) bool {\n\tfor _, s := range strs {\n\t\tif minString[:n] != s[:n] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "Longest Consecutive Sequence/kata.go",
    "content": "package Longest_Consecutive_Sequence\n\nimport \"sort\"\n\nfunc longestConsecutive(nums []int) int {\n\tif len(nums) == 0 || len(nums) == 1 {\n\t\treturn len(nums)\n\t}\n\n\tsort.Ints(nums)\n\n\tif len(nums) == 2 {\n\t\tif nums[1]-nums[0] == 1 {\n\t\t\treturn 2\n\t\t}\n\t\treturn 1\n\t}\n\n\tglobalMax := 1\n\tmax := 1\n\tfor i := 1; i < len(nums); i++ {\n\t\tif nums[i]-nums[i-1] == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tif nums[i]-nums[i-1] == 1 {\n\t\t\tmax++\n\t\t} else {\n\t\t\tif max > globalMax {\n\t\t\t\tglobalMax = max\n\t\t\t}\n\t\t\tmax = 1\n\t\t}\n\t}\n\n\tif max > globalMax {\n\t\tglobalMax = max\n\t}\n\n\treturn globalMax\n}\n"
  },
  {
    "path": "Longest Continuous Increasing Subsequence/kata.go",
    "content": "package kata\n\nfunc findLengthOfLCIS(nums []int) int {\n\tif len(nums) == 0 {\n\t\treturn 0\n\t}\n\tl := 0\n\ta := 0\n\tfor i := 1; i < len(nums); i++ {\n\t\tif nums[i-1] < nums[i] {\n\t\t\ta++\n\t\t\tcontinue\n\t\t}\n\t\tif a > l {\n\t\t\tl = a\n\t\t}\n\t\ta = 0\n\t}\n\tif a > l {\n\t\tl = a\n\t}\n\treturn l + 1\n}\n"
  },
  {
    "path": "Longest Strictly Increasing or Strictly Decreasing Subarray/kata.go",
    "content": "package kata\n\nfunc longestMonotonicSubarray(nums []int) int {\n\tvar lsi int\n\tvar lsd int\n\tvar currentLsi = 1\n\tvar currentLsd = 1\n\tfor i := 1; i < len(nums); i++ {\n\t\tif nums[i-1] < nums[i] {\n\t\t\tcurrentLsi++\n\t\t\tif lsd < currentLsd {\n\t\t\t\tlsd = currentLsd\n\t\t\t}\n\t\t\tcurrentLsd = 1\n\t\t} else if nums[i-1] > nums[i] {\n\t\t\tcurrentLsd++\n\t\t\tif lsi < currentLsi {\n\t\t\t\tlsi = currentLsi\n\t\t\t}\n\t\t\tcurrentLsi = 1\n\t\t} else {\n\t\t\tif lsi < currentLsi {\n\t\t\t\tlsi = currentLsi\n\t\t\t}\n\t\t\tif lsd < currentLsd {\n\t\t\t\tlsd = currentLsd\n\t\t\t}\n\t\t\tcurrentLsd = 1\n\t\t\tcurrentLsi = 1\n\t\t}\n\t}\n\n\tif lsd < currentLsd {\n\t\tlsd = currentLsd\n\t}\n\tif lsi < currentLsi {\n\t\tlsi = currentLsi\n\t}\n\n\tif lsi < lsd {\n\t\treturn lsd\n\t}\n\n\treturn lsi\n}\n"
  },
  {
    "path": "Longest Subsequence With Limited Sum/kata.java",
    "content": "class Solution {\n    public int[] answerQueries(int[] nums, int[] queries) {\n        var res = new int[queries.length];\n        var i = 0;\n        Arrays.sort(nums);\n        for (var  query : queries) {\n            var sum = 0;\n            var subsequenceCount = 0;\n            for (var num : nums) {\n                if (sum + num > query) continue;\n                sum += num;\n                subsequenceCount++;\n            }\n            res[i] = subsequenceCount;\n            i++;\n        }\n        return res;\n    }\n}"
  },
  {
    "path": "Low-Quality Problems/q.sql",
    "content": "SELECT problem_id FROM Problems WHERE (likes/(likes+dislikes))<0.60 ORDER BY problem_id;"
  },
  {
    "path": "Lucky Numbers in a Matrix/kata.go",
    "content": "package kata\n\nfunc luckyNumbers(matrix [][]int) []int {\n\n\ttype point struct {\n\t\ti, j int\n\t}\n\n\tallMins := make([]point, 0)\n\tfor i := 0; i < len(matrix); i++ {\n\t\tcurrentMin := -1\n\t\tvar p point\n\t\tfor j := 0; j < len(matrix[i]); j++ {\n\t\t\tif currentMin == -1 || currentMin > matrix[i][j] {\n\t\t\t\tcurrentMin = matrix[i][j]\n\t\t\t\tp = point{i: i, j: j}\n\t\t\t}\n\t\t}\n\t\tallMins = append(allMins, p)\n\t}\n\n\tvalidValues := make([]int, 0)\nouterLoop:\n\tfor _, point := range allMins {\n\t\tfor i := 0; i < len(matrix); i++ {\n\t\t\tif matrix[point.i][point.j] < matrix[i][point.j] {\n\t\t\t\tcontinue outerLoop\n\t\t\t}\n\t\t}\n\t\tvalidValues = append(validValues, matrix[point.i][point.j])\n\t}\n\n\treturn validValues\n}\n"
  },
  {
    "path": "Majority Element/kata.go",
    "content": "package kata\n\nimport (\n\t\"math\"\n)\n\nfunc majorityElement(nums []int) int {\n\tif len(nums) == 1 {\n\t\treturn nums[0]\n\t}\n\tn := len(nums)\n\tmax := int(math.Ceil(float64(n) / 2))\n\tcounter := make(map[int]int)\n\tvar val int\n\tfor i := 0; i < len(nums); i++ {\n\t\tcounter[nums[i]] = counter[nums[i]] + 1\n\t\tif counter[nums[i]] == max {\n\t\t\tval = nums[i]\n\t\t\tbreak\n\t\t}\n\t}\n\treturn val\n}\n"
  },
  {
    "path": "Majority Element II/kata.go",
    "content": "package kata\n\nimport (\n\t\"math\"\n\t\"sort\"\n)\n\nfunc majorityElement(nums []int) []int {\n\n\tsort.Ints(nums)\n\tcurrentNumber := nums[0]\n\tborder := math.Floor(float64(len(nums)) / 3)\n\tcount := 1\n\tvar j int\n\tfor i := 1; i < len(nums); i++ {\n\t\tif currentNumber == nums[i] {\n\t\t\tcount++\n\t\t} else {\n\t\t\tif float64(count) > border {\n\t\t\t\tnums[j] = currentNumber\n\t\t\t\tj++\n\t\t\t}\n\t\t\tcurrentNumber = nums[i]\n\t\t\tcount = 1\n\t\t}\n\t}\n\n\tif count > 0 && float64(count) > border {\n\t\tnums[j] = currentNumber\n\t\tj++\n\t}\n\n\treturn nums[:j]\n}\n"
  },
  {
    "path": "Make Array Zero by Subtracting Equal Amounts/kata.java",
    "content": "class Solution {\n    public int minimumOperations(int[] nums) {\n        var countOperation = 0;\n        Arrays.sort(nums);\n        var sum = 0;\n        for (var i = 0; i < nums.length; i++) {\n            if (nums[i] == 0) {\n                continue;\n            }\n            if (sum < nums[i]) {\n                sum += Math.abs(sum-nums[i]);\n                countOperation++;\n            }\n        }\n        return countOperation;\n    }\n}\n\n\n"
  },
  {
    "path": "Make The String Great/kata.go",
    "content": "package kata\n\nfunc makeGood(s string) string {\n\tvar stack []byte\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] >= 'a' && s[i] <= 'z' {\n\t\t\tif len(stack) > 0 && stack[len(stack)-1] >= 'A' && stack[len(stack)-1] <= 'Z' {\n\t\t\t\tif (stack[len(stack)-1] + 32) == s[i] {\n\t\t\t\t\tstack = stack[:len(stack)-1]\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tstack = append(stack, s[i])\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tstack = append(stack, s[i])\n\t\t} else {\n\t\t\tif len(stack) > 0 && stack[len(stack)-1] == (s[i]+32) {\n\t\t\t\tstack = stack[:len(stack)-1]\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tstack = append(stack, s[i])\n\t\t}\n\t}\n\treturn string(stack)\n}\n"
  },
  {
    "path": "Make Two Arrays Equal by Reversing Sub-arrays/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc canBeEqual(target []int, arr []int) bool {\n\tif len(target) != len(arr) {\n\t\treturn false\n\t}\n\tsort.Ints(arr)\n\tsort.Ints(target)\n\tfor i, elem := range arr {\n\t\tif target[i] != elem {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "Map Sum Pairs/kata.go",
    "content": "package kata\n\ntype MapSum struct {\n\tvalues map[string]int\n}\n\n/** Initialize your data structure here. */\nfunc Constructor() MapSum {\n\treturn MapSum{values: make(map[string]int)}\n}\n\nfunc (this *MapSum) Insert(key string, val int) {\n\tthis.values[key] = val\n}\n\nfunc (this *MapSum) Sum(prefix string) (sum int) {\n\tfor key, value := range this.values {\n\t\tif len(key) >= len(prefix) && key[:len(prefix)] == prefix {\n\t\t\tsum = sum + value\n\t\t}\n\t}\n\treturn\n}\n\n/**\n * Your MapSum object will be instantiated and called as such:\n * obj := Constructor();\n * obj.Insert(key,val);\n * param_2 := obj.Sum(prefix);\n */\n"
  },
  {
    "path": "Matrix Diagonal Sum/kata.go",
    "content": "package kata\n\nfunc diagonalSum(mat [][]int) int {\n\n\tvar sum int\n\tvar i, j int\n\tl := len(mat) - 1\n\tfor i < len(mat) {\n\t\tsum += mat[i][j]\n\t\tif l == j {\n\t\t\tl--\n\t\t\ti++\n\t\t\tj++\n\t\t\tcontinue\n\t\t}\n\t\tsum += mat[i][l]\n\t\tl--\n\t\ti++\n\t\tj++\n\t}\n\n\treturn sum\n}\n"
  },
  {
    "path": "Max Consecutive Ones/kata.go",
    "content": "package kata\n\nfunc findMaxConsecutiveOnes(nums []int) int {\n\tvar max int\n\tvar c int\n\tfor i := 0; i < len(nums); i++ {\n\t\tif nums[i] == 0 {\n\t\t\tif c > max {\n\t\t\t\tmax = c\n\t\t\t}\n\t\t\tc = 0\n\t\t\tcontinue\n\t\t}\n\t\tc++\n\t}\n\tif c > max {\n\t\tmax = c\n\t}\n\treturn max\n}\n"
  },
  {
    "path": "Max Stack/kata.go",
    "content": "package Max_Stack\n\nimport (\n\t\"container/list\"\n\t\"math\"\n)\n\ntype MaxStack struct {\n\tlist *list.List\n\tmax  *list.Element\n}\n\nfunc Constructor() MaxStack {\n\treturn MaxStack{list: list.New()}\n}\n\nfunc (this *MaxStack) Push(x int) {\n\te := this.list.PushBack(x)\n\tif this.max == nil {\n\t\tthis.max = e\n\t} else if x >= this.max.Value.(int) {\n\t\tthis.max = e\n\t}\n}\n\nfunc (this *MaxStack) Pop() int {\n\te := this.list.Back()\n\tif e == nil {\n\t\treturn -1\n\t}\n\tthis.list.Remove(e)\n\tif e == this.max {\n\t\tthis.max = nil\n\t\tmax := math.MaxInt64\n\t\tfor e1 := this.list.Front(); e1 != nil; e1 = e1.Next() {\n\t\t\tif max == math.MaxInt64 || max <= e1.Value.(int) {\n\t\t\t\tmax = e1.Value.(int)\n\t\t\t\tthis.max = e1\n\t\t\t}\n\t\t}\n\t}\n\treturn e.Value.(int)\n}\n\nfunc (this *MaxStack) Top() int {\n\te := this.list.Back()\n\tif e == nil {\n\t\treturn -1\n\t}\n\treturn e.Value.(int)\n}\n\nfunc (this *MaxStack) PeekMax() int {\n\treturn this.max.Value.(int)\n}\n\nfunc (this *MaxStack) PopMax() int {\n\te := this.max\n\tthis.list.Remove(e)\n\tmax := math.MaxInt64\n\tthis.max = nil\n\tfor e1 := this.list.Front(); e1 != nil; e1 = e1.Next() {\n\t\tif max == math.MaxInt64 || max <= e1.Value.(int) {\n\t\t\tmax = e1.Value.(int)\n\t\t\tthis.max = e1\n\t\t}\n\t}\n\treturn e.Value.(int)\n}\n"
  },
  {
    "path": "Maximize Sum Of Array After K Negations/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc largestSumAfterKNegations(A []int, K int) int {\n\tsort.Slice(A, func(i, j int) bool {\n\t\treturn A[i] < A[j]\n\t})\n\n\tvar i int\n\tfor K > 0 {\n\t\tif A[i] > A[i+1] {\n\t\t\ti++\n\t\t}\n\t\tif A[i] == 0 {\n\t\t\tbreak\n\t\t}\n\t\tA[i] = -1 * A[i]\n\t\tK--\n\t}\n\n\tvar sum int\n\tfor _, a := range A {\n\t\tsum += a\n\t}\n\n\treturn sum\n}\n"
  },
  {
    "path": "Maximum 69 Number/kata.go",
    "content": "package kata\n\nimport \"strconv\"\n\nfunc maximum69Number(num int) int {\n\tb := []byte(strconv.Itoa(num))\n\tfor i := 0; i < len(b); i++ {\n\t\tif b[i] == '6' {\n\t\t\tb[i] = '9'\n\t\t\tbreak\n\t\t}\n\t}\n\tn, _ := strconv.Atoi(string(b))\n\treturn n\n}\n"
  },
  {
    "path": "Maximum Ascending Subarray Sum/kata.go",
    "content": "package kata\n\nfunc maxAscendingSum(nums []int) int {\n\tif len(nums) == 0 {\n\t\treturn 0\n\t}\n\n\tvar globalMax int\n\tvar localMax int\n\n\tlocalMax = nums[0]\n\tfor i := 1; i < len(nums); i++ {\n\t\tif nums[i-1] < nums[i] {\n\t\t\tlocalMax += nums[i]\n\t\t} else {\n\t\t\tif localMax > globalMax {\n\t\t\t\tglobalMax = localMax\n\t\t\t}\n\t\t\tlocalMax = nums[i]\n\t\t}\n\t}\n\n\tif localMax > globalMax {\n\t\tglobalMax = localMax\n\t}\n\n\treturn globalMax\n}\n"
  },
  {
    "path": "Maximum Average Subarray I /kata.go",
    "content": "package Maximum_Average_Subarray_I_\n\nfunc findMaxAverage(nums []int, k int) float64 {\n\tvar sum int\n\tfor i := range nums {\n\t\tif i == k {\n\t\t\tbreak\n\t\t}\n\t\tsum = sum + nums[i]\n\t}\n\n\tmax := sum\n\tfor i := k; i < len(nums); i++ {\n\t\tsum = sum - nums[i-k]\n\t\tsum = sum + nums[i]\n\t\tif sum > max {\n\t\t\tmax = sum\n\t\t}\n\t}\n\n\treturn float64(max) / float64(k)\n}\n"
  },
  {
    "path": "Maximum Count of Positive Integer and Negative Integer/kata.java",
    "content": "class Solution {\n    public int maximumCount(int[] nums) {\n        var posCount = 0;\n        var negCount = 0;\n        for (var num : nums) {\n            if (num >= 1) {\n                posCount++;\n            } else if (num <= -1) {\n                negCount++;\n            }\n        }\n        if (negCount > posCount) {\n            return negCount;\n        }\n        return posCount;\n    }\n}"
  },
  {
    "path": "Maximum Depth of Binary Tree/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc maxDepth(root *TreeNode) int {\n\tif root == nil {\n\t\treturn 0\n\t}\n\treturn height(root, 1)\n}\n\nfunc height(root *TreeNode, count int) int {\n\tleftHeight := count\n\tif root.Left != nil {\n\t\tleftHeight = height(root.Left, leftHeight+1)\n\t}\n\trightHeight := count\n\tif root.Right != nil {\n\t\trightHeight = height(root.Right, rightHeight+1)\n\t}\n\tif rightHeight > leftHeight {\n\t\treturn rightHeight\n\t}\n\treturn leftHeight\n}\n"
  },
  {
    "path": "Maximum Difference Between Increasing Elements/kata.java",
    "content": "class Solution {\n    public int maximumDifference(int[] nums) {\n        var min = -1;\n        var maximumDifference = -1;\n        for (var i = 1; i < nums.length; i++) {\n            if (min == -1 || nums[i-1] < min) {\n                min = nums[i-1];\n            }\n            if (min < nums[i]) {\n                var maximumDifferenceLocal = Math.abs(nums[i]-min);\n                if (maximumDifferenceLocal > maximumDifference) {\n                    maximumDifference = maximumDifferenceLocal;\n                }\n            }\n        }\n        return maximumDifference;\n    }\n}"
  },
  {
    "path": "Maximum Difference by Remapping a Digit/kata.java",
    "content": "class Solution {\n    public int minMaxDifference(int n) {\n        var digitCount = ((int) Math.log10((double) n));\n        var minSum = 0;\n        var maxSum = 0;\n        Integer maxDigit = null;\n        Integer minDigit = null;\n        for (; digitCount >= 0; digitCount--) {\n            var base = (int) Math.pow(10, (double) digitCount);\n\n            var digit = (n/base) % 10;\n\n            if (maxDigit == null && digit < 9) {\n                maxDigit = digit;\n            }\n\n            if(maxDigit != null && maxDigit.intValue() == digit) {\n                maxSum += 9 * base;\n            } else {\n                maxSum += digit * base;\n            }\n\n            if (minDigit == null && digit > 0) {\n                minDigit = digit;\n            }\n\n            if (minDigit != null && minDigit.intValue() == digit) {\n                minSum += 0;\n            } else {\n                minSum += digit * base;\n            }\n        }\n        return maxSum-minSum;\n    }\n}"
  },
  {
    "path": "Maximum Frequency Stack/kata.go",
    "content": "package kata\n\ntype FreqStack struct {\n\tcounter map[int]int\n\tlist    []int\n}\n\nfunc Constructor() FreqStack {\n\treturn FreqStack{\n\t\tcounter: make(map[int]int),\n\t\tlist:    make([]int, 0),\n\t}\n}\n\nfunc (this *FreqStack) Push(x int) {\n\tthis.counter[x] = this.counter[x] + 1\n\tthis.list = append(this.list, x)\n}\n\nfunc (this *FreqStack) Pop() int {\n\tif len(this.list) == 1 {\n\t\tv := this.list[0]\n\t\tthis.list = this.list[1:]\n\t\treturn v\n\t}\n\tmax := 0\n\tindex := 0\n\tfor i := len(this.list) - 1; i > 0; i-- {\n\t\tc := this.counter[this.list[i]]\n\t\tif c > max {\n\t\t\tmax = c\n\t\t\tindex = i\n\t\t}\n\t}\n\tv := this.list[index]\n\tthis.counter[v] = this.counter[v] - 1\n\tthis.list = append(this.list[:index], this.list[index+1:]...)\n\treturn v\n}\n\n/**\n * Your FreqStack object will be instantiated and called as such:\n * obj := Constructor();\n * obj.Push(x);\n * param_2 := obj.Pop();\n */\n"
  },
  {
    "path": "Maximum Nesting Depth of the Parentheses/kata.java",
    "content": "class Solution {\n    public int maxDepth(String s) {\n        var openParentheses = 0;\n        var maxParentheses = 0;\n        for (var i = 0; i < s.length(); i++) {\n            if (s.charAt(i) == '(') {\n                openParentheses++;\n            } else if (s.charAt(i) == ')') {\n                if (maxParentheses < openParentheses) {\n                    maxParentheses =  openParentheses;\n                }\n                openParentheses--;\n            } else if (Character.isDigit(s.charAt(i)) || s.charAt(i) == '+' || s.charAt(i) == '-' || s.charAt(i) == '/' || s.charAt(i) == '*') {\n                if (maxParentheses < openParentheses) {\n                    maxParentheses =  openParentheses;\n                }\n            }\n        }\n        return maxParentheses;\n    }\n}"
  },
  {
    "path": "Maximum Number of Balloons/kata.go",
    "content": "package kata\n\nfunc maxNumberOfBalloons(text string) int {\n\tchars := make(map[rune]int, 0)\n\tfor _, char := range text {\n\t\tif char == 'b' || char == 'a' || char == 'l' || char == 'o' || char == 'n' {\n\t\t\tchars[char]++\n\t\t}\n\t}\n\n\tif len(chars) < 5 {\n\t\treturn 0\n\t}\n\n\tvar min = -1\n\tfor char, count := range chars {\n\t\tif char == 'l' || char == 'o' {\n\t\t\tcount = int(count / 2)\n\t\t}\n\t\tif min == -1 || min > count {\n\t\t\tmin = count\n\t\t}\n\t}\n\treturn min\n}\n"
  },
  {
    "path": "Maximum Number of Balls in a Box/kata.go",
    "content": "package Maximum_Number_of_Balls_in_a_Box\n\nfunc countBalls(lowLimit int, highLimit int) int {\n\tcounter := make(map[int]int, highLimit-lowLimit+1)\n\tmax := -1\n\n\tfor i := lowLimit; i <= highLimit; i++ {\n\n\t\tn := i\n\t\tvar sum int\n\t\tfor n > 0 {\n\t\t\tsum += n % 10\n\t\t\tn = n / 10\n\t\t}\n\n\t\tcounter[sum]++\n\t\tif max == -1 || counter[sum] > max {\n\t\t\tmax = counter[sum]\n\t\t}\n\n\t}\n\n\treturn max\n}\n"
  },
  {
    "path": "Maximum Number of Coins You Can Get/kata.java",
    "content": "class Solution {\n    public int maxCoins(int[] piles) {\n        Arrays.sort(piles);\n        var j = 0;\n        var sum = 0;\n        for (var i = piles.length-2; i >= j; i=i-2) {\n            sum += piles[i];\n            j++;\n        }\n        return sum;\n    }\n}"
  },
  {
    "path": "Maximum Number of Pairs in Array/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc numberOfPairs(nums []int) []int {\n\n\tsort.Ints(nums)\n\tvar r int\n\tvar p int\n\tfor i := 1; i < len(nums); i++ {\n\t\tif nums[i-1] == nums[i] {\n\t\t\ti++\n\t\t\tp++\n\t\t} else {\n\t\t\tr++\n\t\t}\n\t}\n\n\tif p == 0 {\n\t\tr++\n\t}\n\n\tif 2*p+r != len(nums) {\n\t\tr++\n\t}\n\n\treturn []int{p, r}\n}\n"
  },
  {
    "path": "Maximum Number of Words Found in Sentences/kata.go",
    "content": "package kata\n\nfunc mostWordsFound(sentences []string) int {\n\tvar globalMax int\n\tfor _, sentence := range sentences {\n\t\tvar max int\n\t\tfor i := 0; i < len(sentence); i++ {\n\t\t\tif sentence[i] == ' ' {\n\t\t\t\tmax++\n\t\t\t}\n\t\t}\n\t\tmax++\n\t\tif max > globalMax {\n\t\t\tglobalMax = max\n\t\t}\n\t}\n\treturn globalMax\n}\n"
  },
  {
    "path": "Maximum Number of Words You Can Type/kata.go",
    "content": "package Maximum_Number_of_Words_You_Can_Type\n\nfunc canBeTypedWords(text string, brokenLetters string) int {\n\n\tchars := make(map[rune]bool)\n\tfor _, char := range brokenLetters {\n\t\tchars[char] = true\n\t}\n\n\tvar goodWordsCounter int\n\n\tnextWord := false\n\tfor i, char := range text {\n\t\tif nextWord {\n\t\t\tif char == 32 {\n\t\t\t\tnextWord = false\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif chars[char] {\n\t\t\tnextWord = true\n\t\t\tcontinue\n\t\t}\n\n\t\tif char == 32 || (len(text)-1) == i {\n\t\t\tgoodWordsCounter++\n\t\t}\n\t}\n\n\treturn goodWordsCounter\n}\n"
  },
  {
    "path": "Maximum Odd Binary Number/kata.go",
    "content": "package kata\n\nfunc maximumOddBinaryNumber(s string) string {\n\tvar countOnes int\n\tvar countAll int\n\tfor _, digit := range s {\n\t\tif digit == '1' {\n\t\t\tcountOnes++\n\t\t}\n\t\tcountAll++\n\t}\n\n\tif countOnes == 0 {\n\t\treturn s\n\t}\n\n\tmaximumOddBinary := make([]byte, countAll)\n\tcountOnes--\n\tmaximumOddBinary[countAll-1] = '1'\n\tfor i := 0; i < countAll-1; i++ {\n\t\tif countOnes > 0 {\n\t\t\tmaximumOddBinary[i] = '1'\n\t\t\tcountOnes--\n\t\t} else {\n\t\t\tmaximumOddBinary[i] = '0'\n\t\t}\n\t}\n\treturn string(maximumOddBinary)\n}\n"
  },
  {
    "path": "Maximum Product Difference Between Two Pairs/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc maxProductDifference(nums []int) int {\n\tsort.Ints(nums)\n\treturn nums[len(nums)-1]*nums[len(nums)-2] - nums[0]*nums[1]\n}\n"
  },
  {
    "path": "Maximum Product of Three Numbers/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc maximumProduct(nums []int) int {\n\tsort.Ints(nums)\n\tvar sumA, sumB = 1, 1\n\n\tfor _, n := range nums[len(nums)-3:] {\n\t\tsumB = n * sumB\n\t}\n\n\tfor _, n := range nums[:3] {\n\t\tsumA = n * sumA\n\t}\n\n\tif sumA < sumB {\n\t\tsumA = sumB\n\t}\n\tsumB = 1\n\n\tfor _, n := range nums[:2] {\n\t\tsumB = n * sumB\n\t}\n\tsumB = sumB * nums[len(nums)-1]\n\n\tif sumA > sumB {\n\t\treturn sumA\n\t}\n\n\treturn sumB\n}\n"
  },
  {
    "path": "Maximum Product of Two Elements in an Array/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc maxProduct(nums []int) int {\n\tsort.Ints(nums)\n\treturn (nums[len(nums)-1] - 1) * (nums[len(nums)-2] - 1)\n}\n"
  },
  {
    "path": "Maximum Score After Splitting a String/kata.go",
    "content": "package Maximum_Score_After_Splitting_a_String\n\nfunc maxScore(s string) int {\n\n\tones := 0\n\tfor _, char := range s {\n\t\tif char != '0' {\n\t\t\tones++\n\t\t}\n\t}\n\n\tmax := 0\n\n\tleftZeros := 0\n\tfor i, char := range s {\n\t\tif char == '0' {\n\t\t\tleftZeros++\n\t\t} else {\n\t\t\tones--\n\t\t}\n\n\t\tif ones+leftZeros > max && i != len(s)-1 {\n\t\t\tmax = ones + leftZeros\n\t\t}\n\t}\n\n\tif leftZeros == len(s) {\n\t\treturn leftZeros - 1\n\t}\n\n\treturn max\n}\n"
  },
  {
    "path": "Maximum Subarray/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc maxSubArray(nums []int) int {\n\tvar currentSum int\n\tvar globalMax int\n\tvar negativCounter int\n\tmax := math.Inf(-1)\n\tfor _, num := range nums {\n\t\tif num < 0 {\n\t\t\tnegativCounter++\n\t\t}\n\t\tif max == math.Inf(-1) || float64(num) > max {\n\t\t\tmax = float64(num)\n\t\t}\n\t\tcurrentSum = int(math.Max(0, float64(currentSum+num)))\n\t\tglobalMax = int(math.Max(float64(globalMax), float64(currentSum)))\n\t}\n\n\tif negativCounter == len(nums) {\n\t\treturn int(max)\n\t}\n\n\treturn globalMax\n}\n"
  },
  {
    "path": "Maximum Sum Score of Array/kata.go",
    "content": "package Maximum_Sum_Score_of_Array\n\nimport \"math\"\n\nfunc maximumSumScore(nums []int) int64 {\n\n\tvar globalMax int64\n\tfor _, n := range nums {\n\t\tglobalMax += int64(n)\n\t}\n\n\tfinalMax := int64(math.MaxInt64) * -1\n\n\trightMax := int64(nums[len(nums)-1])\n\tr := max(rightMax, globalMax)\n\tif r > finalMax {\n\t\tfinalMax = r\n\t}\n\n\tleftMax := int64(nums[0])\n\tr = max(leftMax, globalMax)\n\tif r > finalMax {\n\t\tfinalMax = r\n\t}\n\n\tif len(nums) == 2 {\n\t\treturn finalMax\n\t}\n\n\tleftMax = int64(0)\n\tleftMaxGlobal := globalMax\n\tfor i := 0; i < len(nums)-1; i++ {\n\t\tleftMax += int64(nums[i])\n\t\tleftMaxGlobal -= int64(nums[i])\n\t\tr := max(leftMax, leftMaxGlobal)\n\t\tif r > finalMax {\n\t\t\tfinalMax = r\n\t\t}\n\t}\n\n\trightMax = int64(0)\n\trightMaxGlobal := globalMax\n\tfor i := len(nums) - 1; i > 0; i-- {\n\t\trightMax += int64(nums[i])\n\t\trightMaxGlobal -= int64(nums[i])\n\t\tr := max(rightMax, rightMaxGlobal)\n\t\tif r > finalMax {\n\t\t\tfinalMax = r\n\t\t}\n\t}\n\n\treturn finalMax\n}\n\nfunc max(a, b int64) int64 {\n\tif a > b {\n\t\treturn a\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "Maximum Sum With Exactly K Elements/kata.go",
    "content": "func maximizeSum(nums []int, k int) int {\n\tvar max int\n\tfor _, num := range nums {\n\t\tif num > max {\n\t\t\tmax = num\n\t\t}\n\t}\n\tvar score int\n\tscore += max\n\tfor i := 1; i < k; i++ {\n\t\tmax = max + 1\n\t\tscore += max\n\t}\n\treturn score\n}"
  },
  {
    "path": "Maximum Twin Sum of a Linked List/kata.go",
    "content": "package kata\n\ntype ListNode struct {\n\tVal  int\n\tNext *ListNode\n}\n\nfunc pairSum(head *ListNode) int {\n\tmax := new(int)\n\tf(head, head, max)\n\treturn *max\n}\n\nfunc f(a *ListNode, b *ListNode, max *int) *ListNode {\n\tif a.Next == nil {\n\t\tsum := a.Val + b.Val\n\t\tif sum > *max {\n\t\t\t*max = sum\n\t\t}\n\t\treturn b.Next\n\t}\n\n\tc := f(a.Next, b, max)\n\tsum := a.Val + c.Val\n\tif sum > *max {\n\t\t*max = sum\n\t}\n\treturn c.Next\n}\n"
  },
  {
    "path": "Maximum Units on a Truck/kata.java",
    "content": "class Solution {\n    public int maximumUnits(int[][] boxTypes, int truckSize) {\n            Arrays.sort(boxTypes, Comparator.comparingInt(a -> a[1]));\n            var sum = 0;\n            for (var i = boxTypes.length-1; i >= 0; i--) {\n                if (boxTypes[i][0] <= truckSize) {\n                    sum += boxTypes[i][0] * boxTypes[i][1];\n                    truckSize -= boxTypes[i][0];\n                } else {\n                    sum += truckSize * boxTypes[i][1];\n                    truckSize = 0;\n                }\n                if (truckSize == 0) {\n                    break;\n                }\n            }\n            return sum;\n    }\n}"
  },
  {
    "path": "Maximum Value after Insertion/kata.go",
    "content": "package Maximum_Value_after_Insertion\n\nfunc maxValue(n string, x int) string {\n\n\tb := make([]byte, len(n)+1)\n\n\ty := byte(x + 48)\n\n\tvar i int\n\tif n[0] == '-' {\n\t\ti = 1\n\t\tb[0] = '-'\n\t}\n\n\tok := true\n\n\tif i == 0 {\n\t\tk := i\n\t\tfor j := i; j < len(n); j++ {\n\t\t\tif ok && y > n[j] {\n\t\t\t\tb[k] = y\n\t\t\t\tk++\n\t\t\t\tb[k] = n[j]\n\t\t\t\tok = false\n\t\t\t} else {\n\t\t\t\tb[k] = n[j]\n\t\t\t}\n\t\t\tk++\n\t\t}\n\t} else {\n\t\tk := i\n\t\tfor j := i; j < len(n); j++ {\n\t\t\tif ok && y < n[j] {\n\t\t\t\tb[k] = y\n\t\t\t\tk++\n\t\t\t\tb[k] = n[j]\n\t\t\t\tok = false\n\t\t\t} else {\n\t\t\t\tb[k] = n[j]\n\t\t\t}\n\t\t\tk++\n\t\t}\n\n\t}\n\n\tif ok {\n\t\tb[len(b)-1] = y\n\t}\n\n\treturn string(b)\n}\n"
  },
  {
    "path": "Maximum Value of a String in an Array/kata.java",
    "content": "class Solution {\n    public int maximumValue(String[] strs) {\n        var max = 0;\n        outerLoop:\n        for (var str: strs) {\n            var localMax = 0;\n            var j = 0;\n            for (var i = str.length()-1; i >= 0; i--) {\n                if (Character.isLetter(str.charAt(i))) {\n                    if (max < str.length()) {\n                        max = str.length();\n                    }\n                    continue outerLoop;\n                }\n                var digit = Character.getNumericValue(str.charAt(i));\n                localMax += (digit * Math.pow(10.0, (double) j));\n                j++;\n            }\n            if (localMax > max) {\n                max = localMax;\n            }\n        }\n        return max;\n    }\n}"
  },
  {
    "path": "Maximum XOR After Operations /kata.java",
    "content": "class Solution {\n    public int maximumXOR(int[] nums) {\n        var max = 0;\n        for (var num : nums) {\n            max |= num;\n        }\n        return max;\n    }\n}"
  },
  {
    "path": "Mean of Array After Removing Some Elements/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc trimMean(arr []int) float64 {\n\tsort.Ints(arr)\n\tp := int(float64(len(arr)) / float64(100) * float64(5))\n\tvar mean float64\n\tfor _, n := range arr[p : len(arr)-p] {\n\t\tmean = mean + float64(n)\n\t}\n\n\treturn mean / float64(len(arr[p:len(arr)-p]))\n}\n"
  },
  {
    "path": "Meeting Rooms/kata.java",
    "content": "class Solution {\n    public boolean canAttendMeetings(int[][] intervals) {\n        // sort intervals by first and second element in []int asscending order\n        Arrays.sort(intervals, new Comparator<int[]>() {\n            @Override\n            public int compare(int[] a, int[] b) {\n                // Compare the first element of each sub-array\n                var compared = Integer.compare(a[0], b[0]);\n                if(compared > 0) {\n                    // a is greater than b\n                    return compared;\n                } else if(compared < 0) {\n                    // a is smaller than b\n                    return compared;\n                }\n                // if first element of a and b is equal then compare the second element of each sub array\n                return Integer.compare(a[1], b[1]);\n            }\n        });\n\n        for (int i = 1; i < intervals.length; i++) {\n           if (intervals[i-1][1] <= intervals[i][0]) {\n                // if end of interval of a is smaller or equal to start of interval b then no overlapp\n               continue;\n           }\n           return false;\n        }\n\n        return true;\n    }\n}"
  },
  {
    "path": "Merge In Between Linked Lists/kata.go",
    "content": "package Merge_In_Between_Linked_Lists\n\ntype ListNode struct {\n\tVal  int\n\tNext *ListNode\n}\n\nfunc mergeInBetween(list1 *ListNode, a int, b int, list2 *ListNode) *ListNode {\n\n\trootNodeB := list2\n\tvar tailNodeB *ListNode\n\tcurrentNodeB := list2\n\tfor currentNodeB != nil {\n\t\tif currentNodeB.Next == nil {\n\t\t\ttailNodeB = currentNodeB\n\t\t}\n\t\tcurrentNodeB = currentNodeB.Next\n\t}\n\n\tvar aNode, bNode *ListNode\n\tcurrentNode := list1\n\tvar previousNode *ListNode\n\tvar c int\n\tfor currentNode != nil {\n\t\tif aNode == nil && c == a {\n\t\t\taNode = previousNode\n\t\t}\n\t\tif bNode == nil && c == b {\n\t\t\tbNode = currentNode.Next\n\t\t\tbreak\n\t\t}\n\t\tpreviousNode = currentNode\n\t\tcurrentNode = currentNode.Next\n\t\tc++\n\t}\n\n\taNode.Next = rootNodeB\n\ttailNodeB.Next = bNode\n\n\treturn list1\n}\n"
  },
  {
    "path": "Merge Nodes in Between Zeros/kata.go",
    "content": "package Merge_Nodes_in_Between_Zeros\n\ntype ListNode struct {\n\tVal  int\n\tNext *ListNode\n}\n\nfunc mergeNodes(head *ListNode) *ListNode {\n\n\tcurrentNode := head\n\n\tvar newChain *ListNode\n\tvar currentNewChain *ListNode\n\n\tvar sumNode *ListNode\n\tfor currentNode != nil {\n\n\t\tif currentNode.Val == 0 {\n\t\t\tnewSumNode := currentNode.Next\n\t\t\tif newSumNode == nil {\n\t\t\t\tsumNode.Next = nil\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tsumNode = newSumNode\n\n\t\t\tif currentNode.Next != nil {\n\t\t\t\tcurrentNode = currentNode.Next.Next\n\t\t\t} else {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif newChain == nil {\n\t\t\t\tnewChain = sumNode\n\t\t\t\tcurrentNewChain = newChain\n\t\t\t} else {\n\t\t\t\tcurrentNewChain.Next = sumNode\n\t\t\t\tcurrentNewChain = currentNewChain.Next\n\t\t\t}\n\n\t\t\tcontinue\n\t\t} else {\n\t\t\tsumNode.Val += currentNode.Val\n\t\t\tsumNode.Next = currentNode.Next\n\t\t\tcurrentNode = currentNode.Next\n\t\t}\n\n\t}\n\n\treturn newChain\n\n}\n"
  },
  {
    "path": "Merge Similar Items/kata.java",
    "content": "class Solution {\n    public List<List<Integer>> mergeSimilarItems(int[][] items1, int[][] items2) {\n        Map<Integer, List<Integer>> mergedItems = new TreeMap<>();\n\n        for (var item: items1) {\n            mergedItems.put(item[0], new ArrayList<>(Arrays.asList(item[0], item[1])));\n        }\n\n        for (var item: items2) {\n            if (mergedItems.containsKey(item[0])) {\n                var element = mergedItems.get(item[0]);\n                element.set(1, element.get(1)+item[1]);\n                mergedItems.put(item[0], element);\n            } else {\n                mergedItems.put(item[0], new ArrayList<>(Arrays.asList(item[0], item[1])));\n            }\n        }\n\n        var list = new ArrayList<List<Integer>>(mergedItems.values());\n\n        return list;\n    }\n}"
  },
  {
    "path": "Merge Strings Alternately/kata.go",
    "content": "package kata\n\nfunc mergeAlternately(word1 string, word2 string) string {\n\n\tvar max int\n\tvar word2IsLongest bool\n\tif len(word1) > len(word2) {\n\t\tmax = len(word2)\n\t} else {\n\t\tmax = len(word1)\n\t\tword2IsLongest = true\n\t}\n\n\tword3 := make([]byte, len(word2)+len(word1))\n\ti := 0\n\tj := 0\n\tfor ; i < max; i++ {\n\t\tword3[j] = word1[i]\n\t\tj++\n\t\tword3[j] = word2[i]\n\t\tj++\n\t}\n\n\tif max == len(word1) && max == len(word2) {\n\t\treturn string(word3)\n\t}\n\n\tif word2IsLongest {\n\t\tfor ; i < len(word2); i++ {\n\t\t\tword3[j] = word2[i]\n\t\t\tj++\n\t\t}\n\t} else {\n\t\tfor ; i < len(word1); i++ {\n\t\t\tword3[j] = word1[i]\n\t\t\tj++\n\t\t}\n\t}\n\n\treturn string(word3)\n}\n"
  },
  {
    "path": "Merge Two 2D Arrays by Summing Values/kata.go",
    "content": "package kata\n\nfunc mergeArrays(nums1 [][]int, nums2 [][]int) [][]int {\n\tmerged := make([][]int, 0)\n\n\ti, j := 0, 0\n\tfor i < len(nums1) || j < len(nums2) {\n\t\tif i < len(nums1) && j < len(nums2) {\n\t\t\tif nums1[i][0] == nums2[j][0] {\n\t\t\t\tnums1[i][1] += nums2[j][1]\n\t\t\t\tmerged = append(merged, nums1[i])\n\t\t\t\ti++\n\t\t\t\tj++\n\t\t\t} else if nums1[i][0] < nums2[j][0] {\n\t\t\t\tmerged = append(merged, nums1[i])\n\t\t\t\ti++\n\t\t\t} else {\n\t\t\t\tmerged = append(merged, nums2[j])\n\t\t\t\tj++\n\t\t\t}\n\t\t} else if i < len(nums1) {\n\t\t\tmerged = append(merged, nums1[i])\n\t\t\ti++\n\t\t} else if j < len(nums2) {\n\t\t\tmerged = append(merged, nums2[j])\n\t\t\tj++\n\t\t}\n\t}\n\n\treturn merged\n}\n"
  },
  {
    "path": "Merge Two Sorted Lists/kata.go",
    "content": "package kata\n\n/**\n * Definition for singly-linked list.\n * type ListNode struct {\n *     Val int\n *     Next *ListNode\n * }\n */\nfunc mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {\n\tcurrentA := l1\n\tcurrentB := l2\n\troot := &ListNode{}\n\tcurrent := root\n\tfor currentB != nil || currentA != nil {\n\t\tif currentB != nil && currentA != nil {\n\t\t\tif currentB.Val <= currentA.Val {\n\t\t\t\tcurrent.Next = currentB\n\t\t\t\tcurrent = currentB\n\t\t\t\tcurrentB = currentB.Next\n\t\t\t} else if currentB.Val >= currentA.Val {\n\t\t\t\tcurrent.Next = currentA\n\t\t\t\tcurrent = currentA\n\t\t\t\tcurrentA = currentA.Next\n\t\t\t}\n\t\t} else if currentB != nil {\n\t\t\tcurrent.Next = currentB\n\t\t\tcurrentB = nil\n\t\t} else if currentA != nil {\n\t\t\tcurrent.Next = currentA\n\t\t\tcurrentA = nil\n\t\t}\n\t}\n\treturn root.Next\n}\n"
  },
  {
    "path": "Merge k Sorted Lists/kata.go",
    "content": "package kata\n\nimport \"container/heap\"\n\n/**\n * Definition for singly-linked list.\n * type ListNode struct {\n *     Val int\n *     Next *ListNode\n * }\n */\n\ntype Item struct {\n\tvalue    *ListNode\n\tpriority int\n\tindex    int\n}\n\nfunc mergeKLists(lists []*ListNode) *ListNode {\n\tif len(lists) == 0 {\n\t\treturn nil\n\t}\n\tpq := make(PriorityQueue, 0)\n\ti := 0\n\tvar current *ListNode\n\tfor _, root := range lists {\n\t\tcurrent = root\n\t\tfor current != nil {\n\t\t\titem := &Item{\n\t\t\t\tvalue:    current,\n\t\t\t\tpriority: current.Val,\n\t\t\t\tindex:    i,\n\t\t\t}\n\t\t\tpq = append(pq, item)\n\t\t\ti++\n\t\t\tcurrent = current.Next\n\t\t}\n\t}\n\tif pq.Len() == 0 {\n\t\treturn nil\n\t}\n\theap.Init(&pq)\n\troot := heap.Pop(&pq).(*Item).value\n\tcurrent = root\n\tfor pq.Len() > 0 {\n\t\tcurrent.Next = heap.Pop(&pq).(*Item).value\n\t\tcurrent = current.Next\n\t}\n\tcurrent.Next = nil\n\treturn root\n}\n\ntype PriorityQueue []*Item\n\nfunc (pq PriorityQueue) Len() int { return len(pq) }\n\nfunc (pq PriorityQueue) Less(i, j int) bool {\n\treturn pq[i].priority < pq[j].priority\n}\n\nfunc (pq PriorityQueue) Swap(i, j int) {\n\tpq[i], pq[j] = pq[j], pq[i]\n\tpq[i].index = i\n\tpq[j].index = j\n}\n\nfunc (pq *PriorityQueue) Pop() interface{} {\n\told := *pq\n\tn := len(old)\n\titem := old[n-1]\n\titem.index = -1\n\t*pq = old[0 : n-1]\n\treturn item\n}\n\nfunc (pq *PriorityQueue) Push(x interface{}) {\n\tn := len(*pq)\n\titem := x.(*Item)\n\titem.index = n\n\t*pq = append(*pq, item)\n}\n"
  },
  {
    "path": "Method Chaining/kata.py",
    "content": "import pandas as pd\n\ndef findHeavyAnimals(animals: pd.DataFrame) -> pd.DataFrame:\n    animals = animals.query('weight > 100')\n    animals = animals.sort_values(by='weight', ascending=False)\n    return animals.filter(['name'])"
  },
  {
    "path": "Middle of the Linked List/kata.go",
    "content": "package kata\n\n/**\n * Definition for singly-linked list.\n * type ListNode struct {\n *     Val int\n *     Next *ListNode\n * }\n */\nfunc middleNode(head *ListNode) *ListNode {\n\tvar current *ListNode\n\tnodes := make([]*ListNode, 0)\n\tcurrent = head\n\tfor current != nil {\n\t\tnodes = append(nodes, current)\n\t\tcurrent = current.Next\n\t}\n\tif len(nodes) == 1 {\n\t\treturn nodes[0]\n\t}\n\tif len(nodes)%2 == 1 {\n\t\treturn nodes[len(nodes)/2]\n\t}\n\n\tmid := (len(nodes) + 1) / 2\n\tif mid >= len(nodes) {\n\t\tmid = len(nodes) - 1\n\t}\n\treturn nodes[mid]\n}\n"
  },
  {
    "path": "Min Cost Climbing Stairs/kata.go",
    "content": "package kata\n\nfunc minCostClimbingStairs(cost []int) int {\n\n\tdp := make([]int, len(cost))\n\tdp[len(cost)-1] = 0\n\n\tfor i := len(cost) - 1; i >= 0; i-- {\n\t\tdp[i] = cost[i] + min(dp, i+1, i+2)\n\t}\n\n\treturn min(dp, 0, 1)\n}\n\nfunc min(dp []int, i, j int) int {\n\n\tvar a int\n\tif i < len(dp) {\n\t\ta = dp[i]\n\t}\n\tvar b int\n\tif j < len(dp) {\n\t\tb = dp[j]\n\t}\n\n\tif a > b {\n\t\treturn b\n\t}\n\n\treturn a\n}\n"
  },
  {
    "path": "Min Max Game/kata.go",
    "content": "package Min_Max_Game\n\nfunc minMaxGame(nums []int) int {\n\n\tif len(nums) == 1 {\n\t\treturn nums[0]\n\t}\n\n\tfor len(nums) != 1 {\n\t\tvar j int\n\t\tfor i := 0; i < len(nums)/2; i++ {\n\t\t\tif i%2 == 0 {\n\t\t\t\tnums[j] = min(nums[2*i], nums[2*i+1])\n\t\t\t} else {\n\t\t\t\tnums[j] = max(nums[2*i], nums[2*i+1])\n\t\t\t}\n\t\t\tj++\n\t\t}\n\t\tnums = nums[:len(nums)/2]\n\t}\n\n\treturn nums[0]\n}\n\nfunc min(a, b int) int {\n\tif a > b {\n\t\treturn b\n\t}\n\treturn a\n}\n\nfunc max(a, b int) int {\n\tif a > b {\n\t\treturn a\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "Min Stack/kata.go",
    "content": "package kata\n\ntype MinStack struct {\n\tlist []int\n}\n\n/** initialize your data structure here. */\nfunc Constructor() MinStack {\n\treturn MinStack{\n\t\tlist: make([]int, 0),\n\t}\n}\n\nfunc (this *MinStack) Push(x int) {\n\tthis.list = append(this.list, x)\n}\n\nfunc (this *MinStack) Pop() {\n\tif len(this.list) == 0 {\n\t\treturn\n\t}\n\tthis.list = this.list[:len(this.list)-1]\n}\n\nfunc (this *MinStack) Top() int {\n\tif len(this.list) == 0 {\n\t\treturn -1\n\t}\n\treturn this.list[len(this.list)-1]\n}\n\nfunc (this *MinStack) GetMin() int {\n\tvar min *int\n\tfor i := 0; i < len(this.list); i++ {\n\t\tif min == nil || *min > this.list[i] {\n\t\t\tif min == nil {\n\t\t\t\tmin = new(int)\n\t\t\t}\n\t\t\t*min = this.list[i]\n\t\t}\n\t}\n\treturn *min\n}\n\n/**\n * Your MinStack object will be instantiated and called as such:\n * obj := Constructor();\n * obj.Push(x);\n * obj.Pop();\n * param_3 := obj.Top();\n * param_4 := obj.GetMin();\n */\n"
  },
  {
    "path": "Minimize Maximum Pair Sum in Array/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc minPairSum(nums []int) int {\n\tsort.Ints(nums)\n\ti := 0\n\tj := len(nums) - 1\n\tvar max int\n\tfor ; i < len(nums)/2; i++ {\n\t\tsum := nums[i] + nums[j]\n\t\tif sum > max {\n\t\t\tmax = sum\n\t\t}\n\t\tj--\n\t}\n\n\treturn max\n}\n"
  },
  {
    "path": "Minimize Product Sum of Two Arrays/kata.go",
    "content": "package Minimize_Product_Sum_of_Two_Arrays\n\nimport \"sort\"\n\nfunc minProductSum(nums1 []int, nums2 []int) int {\n\tsort.Sort(sort.Reverse(sort.IntSlice(nums1)))\n\tsort.Ints(nums2)\n\tvar sum int\n\tfor i := 0; i < len(nums1); i++ {\n\t\tsum += nums1[i] * nums2[i]\n\t}\n\treturn sum\n}\n"
  },
  {
    "path": "Minimize String Length/kata.go",
    "content": "package kata\n\nfunc minimizedStringLength(s string) int {\n    var minimizedLength = len(s)\n    sb := []byte(s)\n    sort.Slice(sb, func(i int, j int) bool { \n        return sb[i] < sb[j] \n    })\n    for i := 1; i < len(sb); i++ {\n        if sb[i] == sb[i-1] {\n            minimizedLength--\n        }\n    }\n    return minimizedLength\n}"
  },
  {
    "path": "Minimum Absolute Difference/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc minimumAbsDifference(arr []int) [][]int {\n\n\tsort.Slice(arr, func(i, j int) bool {\n\t\treturn arr[i] < arr[j]\n\t})\n\n\tglobalMin := -1\n\tfor i := 1; i < len(arr); i++ {\n\t\tmin := arr[i] - arr[i-1]\n\t\tif globalMin == -1 || min < globalMin {\n\t\t\tglobalMin = min\n\t\t}\n\t}\n\n\tpairs := make([][]int, 0)\n\tfor i := 1; i < len(arr); i++ {\n\t\tmin := arr[i] - arr[i-1]\n\t\tif globalMin == min {\n\t\t\tpairs = append(pairs, []int{arr[i-1], arr[i]})\n\t\t}\n\t}\n\n\treturn pairs\n}\n"
  },
  {
    "path": "Minimum Absolute Difference in BST/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc getMinimumDifference(root *TreeNode) int {\n\tps := make(PrioritySlice, 0)\n\ttraverse(root, &ps)\n\tglobalMin := -1\n\tfor i := 1; i < len(ps); i++ {\n\t\tmin := ps[i] - ps[i-1]\n\t\tif globalMin == -1 || min < globalMin {\n\t\t\tglobalMin = min\n\t\t}\n\n\t\tif globalMin == 0 {\n\t\t\treturn globalMin\n\t\t}\n\t}\n\treturn globalMin\n}\n\nfunc traverse(node *TreeNode, ps *PrioritySlice) {\n\tif node == nil {\n\t\treturn\n\t}\n\t*ps = append(*ps, node.Val)\n\tsort.Sort(ps)\n\tif node.Left != nil {\n\t\ttraverse(node.Left, ps)\n\t}\n\tif node.Right != nil {\n\t\ttraverse(node.Right, ps)\n\t}\n}\n\ntype PrioritySlice []int\n\nfunc (pq PrioritySlice) Len() int { return len(pq) }\n\nfunc (pq PrioritySlice) Less(i, j int) bool {\n\treturn pq[i] < pq[j]\n}\n\nfunc (pq PrioritySlice) Swap(i, j int) {\n\tpq[i], pq[j] = pq[j], pq[i]\n}\n"
  },
  {
    "path": "Minimum Add to Make Parentheses Valid/kata.java",
    "content": "class Solution {\n    public int minAddToMakeValid(String s) {\n        var count = 0;\n        var stack = new Stack<Character>();\n        for (var i = 0; i < s.length(); i++) {\n            if (s.charAt(i) == '(') stack.add('(');\n            if (s.charAt(i) == ')') {\n                if (stack.isEmpty()) {\n                    count++;\n                } else {\n                    stack.pop();\n                }\n            }\n\n        }\n        return count + stack.size();\n    }\n}"
  },
  {
    "path": "Minimum Average Difference/kata.go",
    "content": "package kata\n\nfunc minimumAverageDifference(nums []int) int {\n\tvar suffixSum int\n\tvar suffixCount int\n\tfor _, num := range nums {\n\t\tsuffixSum += num\n\t\tsuffixCount++\n\t}\n\n\tvar prefixSum int\n\tvar min = -1\n\tvar idx = 0\n\tfor i, num := range nums {\n\t\tsuffixSum = suffixSum - num\n\t\tsuffixCount--\n\t\tprefixSum += num\n\n\t\tvar a int\n\t\tif suffixSum != 0 {\n\t\t\ta = (suffixSum / suffixCount)\n\t\t}\n\n\t\tv := abs((prefixSum / (i + 1)) - a)\n\t\tif min == -1 || v < min {\n\t\t\tmin = v\n\t\t\tidx = i\n\t\t}\n\t}\n\n\treturn idx\n}\n\nfunc abs(a int) int {\n\tif a < 0 {\n\t\treturn -a\n\t}\n\treturn a\n}\n"
  },
  {
    "path": "Minimum Bit Flips to Convert Number/kata.go",
    "content": "package Minimum_Bit_Flips_to_Convert_Number\n\nfunc minBitFlips(start int, goal int) int {\n\n\tmaxNum, minNum := max(start, goal), min(start, goal)\n\n\tc := maxNum\n\ti := 0\n\tk := 0\n\tfor c != 0 {\n\t\tc = c / 2\n\n\t\ta := 0\n\t\tif maxNum&(1<<i) > 0 {\n\t\t\ta = 1\n\t\t}\n\n\t\tb := 0\n\t\tif minNum&(1<<i) > 0 {\n\t\t\tb = 1\n\t\t}\n\n\t\tif a != b {\n\t\t\tk++\n\t\t}\n\n\t\ti++\n\t}\n\n\treturn k\n}\n\nfunc max(a, b int) int {\n\tif a > b {\n\t\treturn a\n\t}\n\treturn b\n}\n\nfunc min(a, b int) int {\n\tif a < b {\n\t\treturn a\n\t}\n\treturn b\n}\n"
  },
  {
    "path": "Minimum Common Value/kata.java",
    "content": "class Solution {\n    public int getCommon(int[] nums1, int[] nums2) {\n        var i = 0;\n        var j = 0;\n        HashMap<Integer, Integer> counter = new HashMap<>();\n        while(i < nums1.length || j < nums2.length) {\n\n          if (i < nums1.length) {\n\n            var c = 0;\n            if (counter.containsKey(counter.get(nums1[i]))) {\n                c = counter.get(nums1[i]);\n            }\n\n            counter.put(nums1[i]+Integer.MIN_VALUE,  c + 1);\n            if (counter.containsKey(nums1[i]) && counter.get(nums1[i]) > 0 && counter.get(nums1[i]+Integer.MIN_VALUE) > 0){\n                  return nums1[i];\n            }\n          }\n\n          if (j < nums2.length) {\n\n            var c = 0;\n            if (counter.containsKey(counter.get(nums2[j]))) {\n                c = counter.get(nums2[j]);\n            }\n\n            counter.put(nums2[j], c + 1);\n\n            if (counter.get(nums2[j]) > 0 && counter.containsKey(nums2[j]+Integer.MIN_VALUE) && counter.get(nums2[j]+Integer.MIN_VALUE) > 0){\n               return nums2[j];\n            }\n          }\n\n          i++;\n          j++;\n        }\n        return -1;\n    }\n}"
  },
  {
    "path": "Minimum Cuts to Divide a Circle/kata.java",
    "content": "class Solution {\n    public int numberOfCuts(int n) {\n        if (n == 1) {\n            return 0;\n        }\n        if (n % 2 == 1) {\n            return n;\n        }\n        return n / 2;\n    }\n}"
  },
  {
    "path": "Minimum Depth of Binary Tree/kata.go",
    "content": "package kata\n\nimport \"math\"\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\n\nfunc minDepth(node *TreeNode) int {\n\tif node == nil {\n\t\treturn 0\n\t}\n\tif node.Left == nil && node.Right == nil {\n\t\treturn 1\n\t}\n\tif node.Left == nil {\n\t\treturn (minDepth(node.Right) + 1)\n\t}\n\tif node.Right == nil {\n\t\treturn (minDepth(node.Left) + 1)\n\t}\n\treturn int(math.Min(float64(minDepth(node.Right)), float64(minDepth(node.Left)))) + 1\n}\n"
  },
  {
    "path": "Minimum Distance to the Target Element/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc getMinDistance(nums []int, target int, start int) int {\n\n\tsecondRound := false\n\tmin := int(math.Inf(-1))\n\tfor i := start; i < len(nums); i++ {\n\n\t\tif nums[i] == target {\n\n\t\t\td := int(math.Abs(float64(i) - float64(start)))\n\t\t\tif min == int(math.Inf(-1)) || min > d {\n\t\t\t\tmin = d\n\t\t\t}\n\t\t}\n\t\tif !secondRound && i+1 == len(nums) {\n\t\t\ti = -1\n\t\t\tsecondRound = true\n\t\t}\n\t}\n\n\treturn min\n}\n"
  },
  {
    "path": "Minimum Increment to Make Array Unique/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc minIncrementForUnique(A []int) int {\n\n\tsort.Ints(A)\n\tvar count int\n\tfor i := 1; i < len(A); i++ {\n\t\tif A[i] == A[i-1] {\n\t\t\tA[i]++\n\t\t\tcount++\n\t\t\tcontinue\n\t\t}\n\t\tif A[i-1] > A[i] {\n\t\t\tdiff := A[i-1] + 1 - A[i]\n\t\t\tA[i] += diff\n\t\t\tcount += diff\n\t\t\tcontinue\n\t\t}\n\t}\n\n\treturn count\n}\n"
  },
  {
    "path": "Minimum Moves to Convert String/kata.go",
    "content": "package Minimum_Moves_to_Convert_String\n\nfunc minimumMoves(s string) int {\n\tvar c int\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] == 'X' {\n\t\t\tc++\n\t\t\ti = i + 2\n\t\t}\n\t}\n\treturn c\n}\n"
  },
  {
    "path": "Minimum Number Game/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc numberGame(nums []int) []int {\n\tsort.Slice(nums, func(i, j int) bool {\n\t\treturn nums[i] < nums[j]\n\t})\n\tfor i := 0; i < len(nums)-1; i = i + 2 {\n\t\tif i+1 > len(nums) {\n\t\t\tcontinue\n\t\t}\n\t\tnums[i], nums[i+1] = nums[i+1], nums[i]\n\t}\n\treturn nums\n}\n"
  },
  {
    "path": "Minimum Number of Steps to Make Two Strings Anagram II/kata.go",
    "content": "package kata\n\nfunc minSteps(s string, t string) int {\n\n\ttype pair struct {\n\t\ta, b int\n\t}\n\n\tvar tracker = make(map[rune]pair)\n\tfor _, codepoint := range s {\n\t\tpair := tracker[codepoint]\n\t\tpair.a++\n\t\ttracker[codepoint] = pair\n\t}\n\tfor _, codepoint := range t {\n\t\tpair := tracker[codepoint]\n\t\tpair.b++\n\t\ttracker[codepoint] = pair\n\t}\n\n\tvar diffTotal int\n\tfor _, count := range tracker {\n\t\tif count.b > count.a {\n\t\t\tdiff := abs(count.b - count.a)\n\t\t\tdiffTotal += diff\n\t\t}\n\t}\n\n\treturn diffTotal + len(s) + diffTotal - len(t)\n}\n\nfunc abs(a int) int {\n\tif a < 0 {\n\t\treturn -a\n\t}\n\treturn a\n}\n"
  },
  {
    "path": "Minimum Operations to Collect Elements/kata.go",
    "content": "package kata\n\nfunc minOperations(nums []int, k int) int {\n    collection := make(map[int]bool)\n    var counter int\n    for i := len(nums)-1; i >= 0 ; i-- {\n        if len(collection) == k {\n            break\n        }\n\n        if nums[i] <= k {\n            v := collection[nums[i]]\n            if v == false {\n                collection[nums[i]] = true\n            }\n        }\n        counter++\n    }\n    return counter\n}"
  },
  {
    "path": "Minimum Operations to Exceed Threshold Value I/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc minOperations(nums []int, k int) int {\n\tif k == 1 {\n\t\treturn 0\n\t}\n\n\tsort.Slice(nums, func(i, j int) bool {\n\t\treturn nums[i] < nums[j]\n\t})\n\n\tvar countOfsmaller int\n\tfor _, num := range nums {\n\t\tif num >= k {\n\t\t\tbreak\n\t\t}\n\t\tcountOfsmaller++\n\t}\n\n\treturn countOfsmaller\n}\n"
  },
  {
    "path": "Minimum Operations to Make the Array Increasing/kata.go",
    "content": "package Minimum_Operations_to_Make_the_Array_Increasing\n\nfunc minOperations(nums []int) int {\n\n\tif len(nums) == 1 {\n\t\treturn 0\n\t}\n\n\tvar operations int\n\tfor i := 1; i < len(nums); i++ {\n\t\tif nums[i-1] < nums[i] {\n\t\t\tcontinue\n\t\t}\n\t\tn := nums[i-1] - nums[i] + 1\n\t\toperations += n\n\t\tnums[i] += n\n\t}\n\n\treturn operations\n}\n"
  },
  {
    "path": "Minimum Recolors to Get K Consecutive Black Blocks/kata.java",
    "content": "class Solution {\n    public int minimumRecolors(String blocks, int k) {\n        var i = 0;\n        var whiteColorCount = 0;\n        for ( ;i < k; i++) {\n            if (blocks.charAt(i) == 'W') {\n                whiteColorCount++;\n            }\n        }\n        var min = whiteColorCount;\n        for (i = k; i < blocks.length(); i++) {\n            if (blocks.charAt(i) == 'W') {\n                whiteColorCount++;\n            }\n            if (blocks.charAt(i-k) == 'W') {\n                whiteColorCount--;\n            }\n            if (min > whiteColorCount) {\n                min = whiteColorCount;\n            }\n        }\n\n        return min;\n    }\n}"
  },
  {
    "path": "Minimum String Length After Removing Substrings/kata.go",
    "content": "package kata\n\nfunc minLength(s string) int {\n\tif len(s) == 0 {\n\t\treturn 0\n\t}\n\n\tvar stack []byte\n\tvar minimumLength = len(s)\n\tstack = append(stack, s[0])\n\tfor i := 1; i < len(s); i++ {\n\t\tif len(stack) > 0 && ((s[i] == 'B' && stack[len(stack)-1] == 'A') || (s[i] == 'D' && stack[len(stack)-1] == 'C')) {\n\t\t\tminimumLength -= 2\n\t\t\tstack = stack[:len(stack)-1]\n\t\t\tcontinue\n\t\t}\n\t\tstack = append(stack, s[i])\n\t}\n\treturn minimumLength\n}\n"
  },
  {
    "path": "Minimum Subsequence in Non-Increasing Order/kata.java",
    "content": "class Solution {\n    public List<Integer> minSubsequence(int[] nums) {\n        Arrays.sort(nums);\n        var maximumTotalSum = 0;\n        for (var num:  nums) {\n            maximumTotalSum += num;\n        }\n\n        var partialSum = 0;\n        List<Integer> foundNumbers = new ArrayList<>();\n        for (var i = nums.length-1; i >= 0; i--) {\n            partialSum += nums[i];\n            foundNumbers.add(nums[i]);\n            maximumTotalSum -= nums[i];\n            if (partialSum > maximumTotalSum) {\n                break;\n            }\n        }\n\n        return foundNumbers;\n    }\n}"
  },
  {
    "path": "Minimum Sum of Four Digit Number After Splitting Digits/kata.go",
    "content": "package Minimum_Sum_of_Four_Digit_Number_After_Splitting_Digits\n\nimport \"sort\"\n\nfunc minimumSum(num int) int {\n\n\tvar nums []int\n\tfor {\n\t\tr := num % 10\n\t\tnum = num / 10\n\t\tnums = append(nums, r)\n\t\tif num == 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tsort.Ints(nums)\n\n\tuB, uA := 1, 1\n\tvar a, b int\n\n\tfor i := len(nums) - 1; i >= 0; i-- {\n\t\tif nums[i] == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\tif (uA*nums[i])+a > (uB*nums[i])+b {\n\t\t\tb = (uB * nums[i]) + b\n\t\t\tuB = uB * 10\n\t\t} else {\n\t\t\ta = (uA * nums[i]) + a\n\t\t\tuA = uA * 10\n\t\t}\n\n\t}\n\n\treturn a + b\n}\n"
  },
  {
    "path": "Minimum Value to Get Positive Step by Step Sum/kata.java",
    "content": "class Solution {\n    public int minStartValue(int[] nums) {\n        var n = nums.length+1;\n        var sums = new int[n];\n        Integer min = null;\n\n        for (var k = 1; k < n; k++) {\n            sums[k] = sums[k-1] + nums[k-1];\n            if (sums[k] < 1 && (min == null || sums[k] < min)) {\n                min = sums[k];\n            }\n        }\n\n        if (min == null) {\n            return 1;\n        }\n\n        sums[0] = min.intValue();\n        if (sums[0] < 0)\n            sums[0] = sums[0] * -1;\n\n        min = null;\n        for (var k = 1; k < n; k++) {\n            sums[k] = sums[k-1] + nums[k-1];\n            if (sums[k] < 1 && (min == null || sums[k] < min)) {\n                min = sums[k];\n            }\n        }\n\n        var correction = 0;\n        if (min != null) {\n            correction = Math.abs(min.intValue())+1;\n        }\n\n        return sums[0]+correction;\n    }\n}"
  },
  {
    "path": "Missing Number/kata.go",
    "content": "package kata\n\nfunc missingNumber(nums []int) int {\n\tcount := make([]int, len(nums)+1)\n\tfor i := 0; i < len(nums); i++ {\n\t\tcount[nums[i]] = count[nums[i]] + 1\n\t}\n\tfor i := 0; i < len(count); i++ {\n\t\tif count[i] == 0 {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n"
  },
  {
    "path": "Missing Ranges/kata.java",
    "content": "class Solution {\n    public List<String> findMissingRanges(int[] nums, int lower, int upper) {\n        var ranges = new ArrayList<String>();\n        if (nums.length == 0) {\n            if (lower != upper) {\n                ranges.add( Integer.toString(lower) + \"->\" + Integer.toString(upper));\n            } else {\n                ranges.add( Integer.toString(lower));\n            }\n            return ranges;\n        }\n\n        if (nums[0] != lower) {\n            if (nums[0]-1 == lower) {\n                ranges.add(Integer.toString(lower));\n            } else {\n                ranges.add(Integer.toString(lower) + \"->\" + Integer.toString(nums[0]-1));\n            }\n        }\n\n        for (var i = 1; i < nums.length; i++) {\n            var d = nums[i] - nums[i-1];\n            if (d == 1) {\n               continue;\n            }\n            var numA = nums[i-1] + 1;\n            var numB = nums[i] - 1;\n            if (numA != numB) {\n                ranges.add( Integer.toString(numA) + \"->\" + Integer.toString(numB));\n            } else {\n                ranges.add( Integer.toString(numA));\n            }\n        }\n\n        if (nums[nums.length-1] != upper) {\n            if (nums[nums.length-1]+1 == upper) {\n                ranges.add( Integer.toString(upper));\n            } else {\n                ranges.add(Integer.toString(nums[nums.length-1]+1) + \"->\" + Integer.toString(upper));\n            }\n        }\n\n        return ranges;\n    }\n}"
  },
  {
    "path": "Modify Columns/kata.py",
    "content": "import pandas as pd\n\ndef modifySalaryColumn(employees: pd.DataFrame) -> pd.DataFrame:\n    employees['salary'] = employees['salary'].apply(lambda x: x*2)\n    return employees"
  },
  {
    "path": "Modify the Matrix/kata.go",
    "content": "package kata\n\n\nfunc modifiedMatrix(matrix [][]int) [][]int {\n    var maxPerCol = make([]int, len(matrix[0]))\n    for i := range maxPerCol {\n        maxPerCol[i] = int(math.MinInt64)\n    }\n    for i := 0; i < len(matrix); i++ {\n        for j := 0; j < len(matrix[i]); j++ {\n            if matrix[i][j] == -1 {\n                if maxPerCol[j] == int(math.MinInt64) {\n                   currentMax := 0\n                   for k := 0; k < len(matrix); k++ {\n                       if matrix[k][j] > currentMax {\n                           currentMax = matrix[k][j]\n                       }\n                   } \n\n                   matrix[i][j] = currentMax\n                   maxPerCol[j] = currentMax\n\n                } else {\n                    matrix[i][j] = maxPerCol[j]\n                }\n            }\n        }\n    }\n    return matrix\n}"
  },
  {
    "path": "Monotonic Array/kata.go",
    "content": "package kata\n\nfunc isMonotonic(A []int) bool {\n\tvar dec, inc int\n\tfor i := 1; i < len(A); i++ {\n\t\tif A[i-1] < A[i] {\n\t\t\tinc++\n\t\t} else if A[i-1] > A[i] {\n\t\t\tdec++\n\t\t}\n\t}\n\tif (dec == 0 && inc != 0) || (dec != 0 && inc == 0) || (dec == 0 && inc == 0) {\n\t\treturn true\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "Monthly Transactions I/q.sql",
    "content": "SELECT\n    DATE_FORMAT(trans_date, '%Y-%m') AS month,\n   country,\n   COUNT(*) AS trans_count,\n   SUM(\n   CASE\n      WHEN\n         state = \"approved\"\n      THEN\n         1\n      ELSE\n         0\n   END\n  ) AS approved_count,\n SUM(amount) AS trans_total_amount, SUM(\n   CASE\n      WHEN\n         state = \"approved\"\n      THEN\n         amount\n      ELSE\n         0\n   END\n) AS approved_total_amount\nFROM\n    Transactions\nGROUP BY\n    country, DATE_FORMAT(trans_date, '%Y-%m');"
  },
  {
    "path": "Most Common Word/kata.go",
    "content": "package kata\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\nfunc mostCommonWord(paragraph string, banned []string) string {\n\tif len(paragraph) == 0 {\n\t\treturn \"\"\n\t}\n\twords := make(map[string]int)\n\tvar word string\n\tfor i := 0; i < len(paragraph); i++ {\n\t\tif (paragraph[i] >= 65 && paragraph[i] <= 90) || (paragraph[i] >= 97 && paragraph[i] <= 122) {\n\t\t\tword += string(paragraph[i])\n\t\t\tif len(paragraph)-1 != i {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tif word == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tword = strings.ToLower(word)\n\t\tif !hasBanned(banned, word) {\n\t\t\twords[word] = words[word] + 1\n\t\t}\n\t\tword = \"\"\n\t}\n\tif len(words) == 0 {\n\t\treturn strings.ToLower(word)\n\t}\n\tmax := -1\n\tfor w, c := range words {\n\t\tfmt.Println(w, c)\n\t\tif max == -1 || c > max {\n\t\t\tword = w\n\t\t\tmax = c\n\t\t}\n\t}\n\treturn word\n}\n\nfunc hasBanned(banned []string, word string) bool {\n\tfor i := 0; i < len(banned); i++ {\n\t\tif strings.ToLower(banned[i]) == word {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "Most Frequent Even Element/kata.go",
    "content": "package Most_Frequent_Even_Element\n\nimport \"sort\"\n\nfunc mostFrequentEven(nums []int) int {\n\tsort.Ints(nums)\n\n\tvar max int\n\tvar globalMax int\n\tvar currentMaxNumber int\n\tvar currentNumber int\n\tfor i, n := range nums {\n\t\tif n%2 == 0 || n == 0 {\n\t\t\tif n != currentNumber {\n\t\t\t\tif globalMax < max {\n\t\t\t\t\tglobalMax = max\n\t\t\t\t\tcurrentMaxNumber = nums[i-1]\n\t\t\t\t}\n\t\t\t\tmax = 0\n\t\t\t}\n\t\t\tcurrentNumber = n\n\t\t\tmax++\n\t\t} else {\n\t\t\tif globalMax < max {\n\t\t\t\tglobalMax = max\n\t\t\t\tcurrentMaxNumber = nums[i-1]\n\t\t\t}\n\t\t\tmax = 0\n\t\t}\n\t}\n\n\tif globalMax < max {\n\t\tcurrentMaxNumber = nums[len(nums)-1]\n\t\tglobalMax = max\n\t}\n\tif globalMax == 0 {\n\t\tcurrentMaxNumber = -1\n\t}\n\n\treturn currentMaxNumber\n}\n"
  },
  {
    "path": "Most Frequent Number Following Key In an Array/kata.go",
    "content": "package Most_Frequent_Number_Following_Key_In_an_Array\n\nfunc mostFrequent(nums []int, key int) int {\n\n\tcounter := map[int]int{}\n\n\tfor i := 0; i < len(nums)-1; i++ {\n\t\tif nums[i] == key {\n\t\t\tcounter[nums[i+1]]++\n\t\t}\n\t}\n\n\tvar max, num int\n\tfor n, c := range counter {\n\t\tif c > max {\n\t\t\tmax = c\n\t\t\tnum = n\n\t\t}\n\t}\n\n\treturn num\n}\n"
  },
  {
    "path": "Move Zeroes/kata.go",
    "content": "package kata\n\nfunc moveZeroes(nums []int) {\n\tstack := make([]int, 0)\n\tfor _, num := range nums {\n\t\tif num == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tstack = append(stack, num)\n\t}\n\tfor i := 0; i < len(nums); i++ {\n\t\tif len(stack) == 0 {\n\t\t\tnums[i] = 0\n\t\t} else {\n\t\t\tnums[i] = stack[0]\n\t\t\tstack = stack[1:]\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Moving Average from Data Stream/kata.go",
    "content": "package Moving_Average_from_Data_Stream\n\nimport \"container/list\"\n\ntype MovingAverage struct {\n\tcurrentLen int\n\tsize       int\n\tlist       *list.List\n\tsum        float64\n}\n\nfunc Constructor(size int) MovingAverage {\n\treturn MovingAverage{\n\t\tsize: size,\n\t\tlist: list.New(),\n\t}\n}\n\nfunc (mv *MovingAverage) Next(val int) float64 {\n\tmv.currentLen++\n\tmv.list.PushBack(val)\n\tif mv.currentLen > mv.size {\n\t\tn := mv.list.Front().Value.(int)\n\t\tmv.list.Remove(mv.list.Front())\n\t\tmv.sum = mv.sum - float64(n)\n\t\tmv.currentLen--\n\t}\n\tmv.sum = mv.sum + float64(val)\n\treturn mv.sum / float64(mv.currentLen)\n}\n"
  },
  {
    "path": "Multiply Strings/kata.go",
    "content": "package kata\n\nimport \"math/big\"\n\nfunc multiply(num1 string, num2 string) string {\n\ta, _ := big.NewInt(0).SetString(num1, 10)\n\tb, _ := big.NewInt(0).SetString(num2, 10)\n\ty := big.NewInt(0).Mul(a, b)\n\treturn y.String()\n}\n"
  },
  {
    "path": "My Calendar I/kata.go",
    "content": "package kata\n\ntype BookingInfo struct {\n\tstart int\n\tend   int\n}\n\ntype MyCalendar struct {\n\tbooked []BookingInfo\n}\n\nfunc Constructor() MyCalendar {\n\treturn MyCalendar{\n\t\tbooked: make([]BookingInfo, 0),\n\t}\n}\n\nfunc (this *MyCalendar) Book(start int, end int) bool {\n\tif len(this.booked) == 0 {\n\t\tthis.booked = append(this.booked, BookingInfo{start: start, end: end})\n\t\treturn true\n\t}\n\n\tfor _, booking := range this.booked {\n\t\tif booking.start < end && start < booking.end {\n\t\t\treturn false\n\t\t}\n\t}\n\tthis.booked = append(this.booked, BookingInfo{start: start, end: end})\n\treturn true\n}\n\n/**\n * Your MyCalendar object will be instantiated and called as such:\n * obj := Constructor();\n * param_1 := obj.Book(start,end);\n */\n"
  },
  {
    "path": "N-Repeated Element in Size 2N Array/kata.go",
    "content": "package kata\n\nfunc repeatedNTimes(A []int) (n int) {\n\tset := make(map[int]int)\n\tfor i := 0; i < len(A); i++ {\n\t\tset[A[i]]++\n\t\tif set[A[i]] > 1 {\n\t\t\tn = A[i]\n\t\t\treturn\n\t\t}\n\t}\n\treturn\n}\n"
  },
  {
    "path": "N-th Tribonacci Number/kata.go",
    "content": "package kata\n\n// 0, 0, 1, 1, 2, 4, 7, 13, 24, 44, 81, 149, 274, 504, 927, 1705, 3136, 5768, 10609, 19513, 35890, 66012\n\nfunc tribonacci(n int) int {\n\tif n == 0 {\n\t\treturn 0\n\t}\n\tif n == 1 {\n\t\treturn 1\n\t}\n\n\tif n == 2 {\n\t\treturn 1\n\t}\n\n\tsolver := eq()\n\tvar k int\n\tfor i := 0; i < n-2; i++ {\n\t\tk = solver()\n\t}\n\treturn k\n}\n\nfunc eq() func() int {\n\tx1, x2, x3 := 0, 1, 1\n\treturn func() int {\n\t\tx1, x2, x3 = x2, x3, x1+x2+x3\n\t\treturn x3\n\t}\n}\n"
  },
  {
    "path": "NPV Queries/q.sql",
    "content": "SELECT q.id, q.year, COALESCE(npv, 0) AS npv FROM Queries AS q LEFT JOIN  NPV AS n ON q.id=n.id AND q.year=n.year"
  },
  {
    "path": "Neither Minimum nor Maximum/kata.go",
    "content": "package kata\n\nimport (\n    \"sort\"\n)\n\nfunc findNonMinOrMax(nums []int) int {\n    if len(nums) <= 2 {\n        return -1\n    }\n    sort.Ints(nums)\n    return nums[1]\n}"
  },
  {
    "path": "Nested List Weight Sum/kata.go",
    "content": "package Nested_List_Weight_Sum\n\n/**\n * // This is the interface that allows for creating nested lists.\n * // You should not implement it, or speculate about its implementation\n * type NestedInteger struct {\n * }\n *\n * // Return true if this NestedInteger holds a single integer, rather than a nested list.\n * func (n NestedInteger) IsInteger() bool {}\n *\n * // Return the single integer that this NestedInteger holds, if it holds a single integer\n * // The result is undefined if this NestedInteger holds a nested list\n * // So before calling this method, you should have a check\n * func (n NestedInteger) GetInteger() int {}\n *\n * // Set this NestedInteger to hold a single integer.\n * func (n *NestedInteger) SetInteger(value int) {}\n *\n * // Set this NestedInteger to hold a nested list and adds a nested integer to it.\n * func (n *NestedInteger) Add(elem NestedInteger) {}\n *\n * // Return the nested list that this NestedInteger holds, if it holds a nested list\n * // The list length is zero if this NestedInteger holds a single integer\n * // You can access NestedInteger's List element directly if you want to modify it\n * func (n NestedInteger) GetList() []*NestedInteger {}\n */\nfunc depthSum(nestedList []*NestedInteger) int {\n\tl := 1\n\tsum := 0\n\tf(nestedList, &sum, l)\n\treturn sum\n}\n\nfunc f(nestedList []*NestedInteger, sum *int, l int) {\n\tfor _, o := range nestedList {\n\t\tif o.IsInteger() {\n\t\t\t*sum += l * o.GetInteger()\n\t\t} else {\n\t\t\tf(o.GetList(), sum, l+1)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "New Users Daily Count/q.sql",
    "content": "WITH summary AS (\n    SELECT\n        MIN(activity_date) AS activity_date,\n        user_id\n    FROM\n        Traffic\n    WHERE\n            activity = \"login\"\n    GROUP BY\n        user_id\n)\n\nSELECT\n    activity_date AS login_date,\n    COUNT(DISTINCT user_id) AS user_count\nFROM\n    summary\nWHERE\n    (\n                activity_date >= (DATE_SUB(\"2019-06-30\", INTERVAL 90 DAY))\n            AND activity_date <= \"2019-06-30\"\n        )\nGROUP BY\n    activity_date;\n"
  },
  {
    "path": "Next Greater Element I/kata.go",
    "content": "package kata\n\nfunc nextGreaterElement(nums1 []int, nums2 []int) []int {\n\tset := make(map[int]int)\n\tfor i := 0; i < len(nums2); i++ {\n\t\tset[nums2[i]] = i\n\t}\n\n\tn := make([]int, len(nums1))\n\to := 0\n\tfor i := 0; i < len(nums1); i++ {\n\t\tj := set[nums1[i]]\n\t\tfound := false\n\t\tfor k := j + 1; k < len(nums2); k++ {\n\t\t\tif nums2[j] < nums2[k] {\n\t\t\t\tn[o] = nums2[k]\n\t\t\t\tfound = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !found {\n\t\t\tn[o] = -1\n\t\t}\n\t\to++\n\n\t}\n\treturn n\n}\n"
  },
  {
    "path": "Not Boring Movies/kata.sql",
    "content": "package kata\n\nSELECT * FROM cinema c WHERE c.description != \"boring\" AND c.id % 2 = 1 ORDER BY c.rating DESC;\n\n"
  },
  {
    "path": "Nth Highest Salary/kata.sql",
    "content": "package kata\n\n\nCREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT\nBEGIN\n  DECLARE o INT;\n  SET o := N-1;   \n  RETURN (\n      SELECT CASE WHEN Salary IS NULL\n        THEN NULL\n        ELSE Salary\n        END AS Salary FROM (select distinct Salary from Employee) AS E ORDER BY Salary DESC LIMIT 1 OFFSET o\n  );\nEND\n"
  },
  {
    "path": "Number Complement/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc findComplement(num int) int {\n\tbin := make([]int, 0)\n\tfor num > 0 {\n\t\tk := num % 2\n\t\tnum = num / 2\n\t\tbin = append(bin, k)\n\t}\n\n\tfor i := range bin {\n\t\tif bin[i] == 1 {\n\t\t\tbin[i] = 0\n\t\t} else {\n\t\t\tbin[i] = 1\n\t\t}\n\t}\n\n\tnum = 0\n\tfor i := 0; i < len(bin); i++ {\n\t\tnum += bin[i] * int(math.Pow(float64(2), float64(i)))\n\t}\n\n\treturn num\n}\n"
  },
  {
    "path": "Number Of Rectangles That Can Form The Largest Square/kata.java",
    "content": "class Solution {\n    public int countGoodRectangles(int[][] rectangles) {\n        var count = 0;\n        var maxLen = -1;\n        for (var rectangle : rectangles) {\n            var minLen = min(rectangle[0], rectangle[1]);\n            if (maxLen == -1 || minLen > maxLen) {\n                maxLen = minLen;\n                count = 1;\n            } else if (minLen == maxLen) {\n                count++;\n            }\n        }\n        return count;\n    }\n    private int min(int a, int b) {\n        if (a < b) {\n            return a;\n        }\n        return b;\n    }\n}"
  },
  {
    "path": "Number of 1 Bits/kata.go",
    "content": "package kata\n\nfunc hammingWeight(num uint32) int {\n\tvar countSetBits int\n\tfor num > 0 {\n\t\tbit := num % 2\n\t\tnum = num / 2\n\t\tif bit == 1 {\n\t\t\tcountSetBits++\n\t\t}\n\t}\n\treturn countSetBits\n}\n"
  },
  {
    "path": "Number of Arithmetic Triplets/kata.java",
    "content": "class Solution {\n    public int arithmeticTriplets(int[] nums, int diff) {\n\n        Set<Integer> set = new HashSet<Integer>();\n        for (var num : nums) {\n            set.add(num);\n        }\n\n        var tripletCount = 0;\n        for (var i = 0; i < nums.length; i++) {\n            var jump = nums[i]+diff;\n            if (set.contains(jump) && set.contains(jump+diff)) {\n                tripletCount++;\n            }\n        }\n\n        return tripletCount;\n    }\n}"
  },
  {
    "path": "Number of Days Between Two Dates/kata.go",
    "content": "package kata\n\nimport \"time\"\n\nconst layoutISO = \"2006-01-02\"\n\nfunc daysBetweenDates(date1 string, date2 string) int {\n\tdA, err := time.Parse(layoutISO, date2)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tdB, err := time.Parse(layoutISO, date1)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\td := int(dA.Sub(dB).Hours() / 24)\n\tif d < 0 {\n\t\treturn d * -1\n\t}\n\n\treturn d\n}\n"
  },
  {
    "path": "Number of Days in a Month/kata.java",
    "content": "// January: 31 days\n// February: 28 days in a common year, 29 days in a leap year\n// March: 31 days\n// April: 30 days\n// May: 31 days\n// June: 30 days\n// July: 31 days\n// August: 31 days\n// September: 30 days\n// October: 31 days\n// November: 30 days\n// December: 31 days\n\nclass Solution {\n    public int numberOfDays(int year, int month) {\n        if (month == 1\n        || month == 3\n        || month == 5\n        || month == 7\n        || month == 8\n        || month == 10\n        || month == 12) {\n            return 31;\n        }\n\n        if (month == 2) {\n            if (year % 4 != 0) return 28;\n            else if (year % 100 != 0) return 29;\n            else if (year % 400 != 0) return 28;\n            return 29;\n        }\n\n        return 30;\n    }\n\n}\n\n"
  },
  {
    "path": "Number of Different Integers in a String/kata.go",
    "content": "package kata\n\nfunc numDifferentIntegers(word string) int {\n\tvar found int\n\tcount := make(map[string]int)\n\tdigit := []rune{}\n\tfor _, char := range word {\n\t\tif char >= 48 && char <= 57 {\n\t\t\tfound++\n\t\t\tdigit = append(digit, char)\n\t\t}\n\t\tif char >= 97 && char <= 122 {\n\t\t\tif found >= 1 {\n\t\t\t\tfound = 0\n\n\t\t\t\tvar i int\n\t\t\t\tfor _, n := range digit {\n\t\t\t\t\tif n == '0' {\n\t\t\t\t\t\ti++\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcount[string(digit[i:])] = 0\n\t\t\t\tdigit = []rune{}\n\t\t\t}\n\t\t}\n\t}\n\n\tif found >= 1 {\n\t\tvar i int\n\t\tfor _, n := range digit {\n\t\t\tif n == '0' {\n\t\t\t\ti++\n\t\t\t} else {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tcount[string(digit[i:])] = 0\n\t}\n\n\treturn len(count)\n}\n"
  },
  {
    "path": "Number of Distinct Averages/kata.java",
    "content": "import java.util.Arrays;\nimport java.util.HashSet;\n\nclass Solution {\n    public int distinctAverages(int[] nums) {\n        Arrays.sort(nums);\n        var i = 0;\n        var j = nums.length-1;\n        var distinctAverages = new HashSet<Double>();\n        for (; i < nums.length; i++) {\n            distinctAverages.add(((double) (nums[i] + nums[j])) / 2);\n            j--;\n        }\n        return distinctAverages.size();\n    }\n}"
  },
  {
    "path": "Number of Employees Who Met the Target/kata.go",
    "content": "package kata\n\nfunc numberOfEmployeesWhoMetTarget(hours []int, target int) int {\n\tvar employeeCount int\n\tfor i := 0; i < len(hours); i++ {\n\t\tif hours[i] >= target {\n\t\t\temployeeCount++\n\t\t}\n\t}\n\treturn employeeCount\n}\n"
  },
  {
    "path": "Number of Equivalent Domino Pairs/kata.go",
    "content": "package Number_of_Equivalent_Domino_Pairs\n\nimport \"math/big\"\n\nfunc numEquivDominoPairs(dominoes [][]int) int {\n\n\tvar matrix [100]int\n\n\tvar c int\n\tfor _, d := range dominoes {\n\t\tn := hash(d)\n\t\tmatrix[n]++\n\t}\n\n\tfor _, d := range matrix {\n\t\tif d >= 2 {\n\t\t\tc += Binomial(d)\n\t\t}\n\t}\n\n\treturn c\n}\n\nfunc hash(d []int) int {\n\treturn 10*max(d[0], d[1]) + min(d[0], d[1])\n}\n\nfunc max(a, b int) int {\n\tif a > b {\n\t\treturn a\n\t}\n\treturn b\n}\n\nfunc min(a, b int) int {\n\tif a < b {\n\t\treturn a\n\t}\n\treturn b\n}\n\nfunc init() {\n\tcache = make(map[int]int)\n}\n\nvar cache map[int]int\n\nfunc Binomial(n int) int {\n\tif _, ok := cache[n]; ok {\n\t\treturn cache[n]\n\t}\n\n\tk := new(big.Int)\n\treturn int(k.Binomial(int64(n), 2).Int64())\n}\n"
  },
  {
    "path": "Number of Even and Odd Bits/kata.go",
    "content": "package kata\n\nfunc evenOddBit(n int) []int {\n\tvar i int\n\tvar odd int\n\tvar even int\n\tfor n > 0 {\n\t\tb := n % 2\n\t\tn = n / 2\n\t\tif b == 1 {\n\t\t\tif i%2 == 0 {\n\t\t\t\teven++\n\t\t\t} else {\n\t\t\t\todd++\n\t\t\t}\n\t\t}\n\t\ti++\n\t}\n\treturn []int{even, odd}\n}\n"
  },
  {
    "path": "Number of Good Pairs/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc numIdenticalPairs(nums []int) int {\n\n\tsort.Ints(nums)\n\n\tvar c int\n\tvar knowNumber *int\n\tvar k int\n\tfor i := 0; i < len(nums); i++ {\n\t\tif knowNumber == nil {\n\t\t\tknowNumber = new(int)\n\t\t\t*knowNumber = i\n\t\t\tk++\n\t\t\tcontinue\n\t\t}\n\n\t\tif nums[*knowNumber] != nums[i] || (i == len(nums)-1 && nums[i] == nums[*knowNumber]) {\n\n\t\t\tif i == len(nums)-1 && nums[i] == nums[*knowNumber] {\n\t\t\t\tk++\n\t\t\t}\n\n\t\t\tif k == 1 {\n\t\t\t\t*knowNumber = i\n\t\t\t\tk = 1\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif k == 2 {\n\t\t\t\tc += 1\n\t\t\t} else {\n\t\t\t\tc += (k - 1) * (k) / 2\n\t\t\t}\n\n\t\t\t*knowNumber = i\n\t\t\tk = 0\n\t\t}\n\t\tk++\n\n\t}\n\n\treturn c\n}\n"
  },
  {
    "path": "Number of Laser Beams in a Bank/kata.go",
    "content": "package Number_of_Laser_Beams_in_a_Bank\n\nfunc numberOfBeams(bank []string) int {\n\tvar sum int\n\tpreCurrentDevices := -1\n\tfor i := 0; i < len(bank); i++ {\n\t\tvar currentDevices int\n\t\tfor j := 0; j < len(bank[i]); j++ {\n\t\t\tif bank[i][j] == '1' {\n\t\t\t\tcurrentDevices++\n\t\t\t}\n\t\t}\n\t\tif preCurrentDevices == -1 {\n\t\t\tpreCurrentDevices = currentDevices\n\t\t} else {\n\t\t\tif preCurrentDevices > 0 && currentDevices > 0 {\n\t\t\t\tsum += preCurrentDevices * currentDevices\n\t\t\t\tpreCurrentDevices = currentDevices\n\t\t\t} else if preCurrentDevices == 0 && currentDevices > 0 {\n\t\t\t\tpreCurrentDevices = currentDevices\n\t\t\t}\n\t\t}\n\t}\n\treturn sum\n}\n"
  },
  {
    "path": "Number of Lines To Write String/kata.java",
    "content": "class Solution {\n    public int[] numberOfLines(int[] widths, String s) {\n        var res = new int[2];\n\n        final var threshold = 100;\n        var currentLineWidth = 0;\n        for (var i = 0; i < s.length(); i++) {\n            if (currentLineWidth + widths[s.codePointAt(i)-97] > threshold) {\n                currentLineWidth = widths[s.codePointAt(i)-97];\n                res[0]++;\n            } else {\n                currentLineWidth = currentLineWidth + widths[s.codePointAt(i)-97];\n            }\n        }\n\n        if (currentLineWidth > 0) {\n            res[1] = currentLineWidth;\n            res[0]++;\n        }\n\n        return res;\n    }\n}"
  },
  {
    "path": "Number of Recent Calls/kata.go",
    "content": "package kata\n\ntype RecentCounter struct {\n\tpings []int\n}\n\nfunc Constructor() RecentCounter {\n\treturn RecentCounter{\n\t\tpings: make([]int, 0),\n\t}\n}\n\nfunc (rc *RecentCounter) Ping(t int) int {\n\trc.pings = append(rc.pings, t)\n\tvar count int\n\tmin := t - 3000\n\n\ti := len(rc.pings) - 1\n\tfor ; i >= 0; i-- {\n\t\tif rc.pings[i] < min {\n\t\t\tbreak\n\t\t}\n\t\tcount++\n\t}\n\n\trc.pings = rc.pings[i+1:]\n\n\treturn count\n}\n\n/**\n * Your RecentCounter object will be instantiated and called as such:\n * obj := Constructor();\n * param_1 := obj.Ping(t);\n */\n"
  },
  {
    "path": "Number of Segments in a String/kata.go",
    "content": "package kata\n\nfunc countSegments(s string) int {\n\tvar c int\n\tvar word int\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] != ' ' {\n\t\t\tword++\n\t\t}\n\t\tif (s[i] == ' ' || len(s)-1 == i) && word > 0 {\n\t\t\tc++\n\t\t\tword = 0\n\t\t}\n\t}\n\treturn c\n}\n"
  },
  {
    "path": "Number of Senior Citizens/kata.go",
    "content": "package kata\n\nfunc countSeniors(details []string) int {\n    var count int\n    for _, detail := range details {\n        var age int\n        var multipler = 1\n        i := len(detail)-3\n        for {\n            if i == 10 {\n                break\n            }    \n            age += (int(detail[i])-48) * multipler\n            multipler *= 10\n            i-- \n        }\n        if age > 60 {\n            count++\n        }\n    }\n    return count\n}"
  },
  {
    "path": "Number of Steps to Reduce a Number to Zero/kata.go",
    "content": "package kata\n\nfunc numberOfSteps(num int) int {\n\tvar steps int\n\tfor num > 0 {\n\t\tif num%2 == 0 {\n\t\t\tnum = num / 2\n\t\t} else {\n\t\t\tnum -= 1\n\t\t}\n\t\tsteps++\n\t}\n\treturn steps\n}\n"
  },
  {
    "path": "Number of Strings That Appear as Substrings in Word/kata.java",
    "content": "class Solution {\n    public int numOfStrings(String[] patterns, String word) {\n        var count = 0;\n        for (var pattern : patterns) {\n            if (word.contains(pattern)) {\n                count++;\n            }\n        }\n        return count;\n    }\n}"
  },
  {
    "path": "Number of Students Doing Homework at a Given Time/kata.go",
    "content": "package kata\n\nfunc busyStudent(startTime []int, endTime []int, queryTime int) int {\n\tvar matched int\n\tfor i := 0; i < len(startTime); i++ {\n\t\tif startTime[i] > queryTime {\n\t\t\tcontinue\n\t\t}\n\t\tif endTime[i] < queryTime {\n\t\t\tcontinue\n\t\t}\n\t\tmatched++\n\t}\n\treturn matched\n}\n"
  },
  {
    "path": "Number of Sub-arrays of Size K and Average Greater than or Equal to Threshold/kata.java",
    "content": "class Solution {\n    public int numOfSubarrays(int[] arr, int k, int threshold) {\n        var i = 0;\n        var sum = 0;\n        for (; i < k; i++) {\n            sum += arr[i];\n        }\n\n        var avg = sum/k;\n        var matchedCount = 0;\n        if (avg >= threshold) {\n            matchedCount++;\n        }\n\n        for (; i < arr.length; i++) {\n            sum += arr[i];\n            sum -= arr[i-k];\n            avg = sum/k;\n            if (avg >= threshold) {\n                matchedCount++;\n            }\n        }\n\n        return matchedCount;\n    }\n}"
  },
  {
    "path": "Number of Unique Subjects Taught by Each Teacher/k.sql",
    "content": "SELECT teacher_id, COUNT(DISTINCT subject_id) AS cnt FROM Teacher GROUP BY teacher_id;"
  },
  {
    "path": "Number of Visible People in a Queue/kata.go",
    "content": "package kata\n\nfunc canSeePersonsCount(heights []int) []int {\n\tvar stack []int\n\tresult := make([]int, len(heights))\n\tfor i := len(heights) - 1; i >= 0; i-- {\n\t\tfor len(stack) > 0 && heights[i] > heights[stack[len(stack)-1]] {\n\t\t\tstack = stack[:len(stack)-1]\n\t\t\tresult[i]++\n\t\t}\n\t\tif len(stack) >= 1 {\n\t\t\tresult[i]++\n\t\t}\n\t\tstack = append(stack, i)\n\t}\n\n\treturn result\n}\n"
  },
  {
    "path": "Occurrences After Bigram/kata.go",
    "content": "package kata\n\nfunc findOcurrences(text string, first string, second string) []string {\n\n\tvar j int\n\tmatchedFirst := -1\n\tmatchedSecond := -1\n\twordCount := 0\n\twords := make([]string, 0)\n\tfor i := 0; i < len(text); i++ {\n\t\tif text[i] == ' ' || len(text)-1 == i {\n\t\t\tif len(text)-1 == i {\n\t\t\t\ti = i + 1\n\t\t\t}\n\t\t\twordCount++\n\n\t\t\tif matchedFirst == -1 && text[j:i] == first {\n\t\t\t\tmatchedFirst = wordCount\n\t\t\t\tj = i + 1\n\t\t\t\tcontinue\n\t\t\t} else if wordCount-1 == matchedFirst && text[j:i] == second {\n\t\t\t\tmatchedSecond = wordCount\n\t\t\t\tj = i + 1\n\t\t\t\tcontinue\n\t\t\t} else if wordCount-1 == matchedSecond {\n\t\t\t\twords = append(words, text[j:i])\n\t\t\t\tmatchedSecond = -1\n\t\t\t\tmatchedFirst = -1\n\t\t\t\tif text[j:i] == first {\n\t\t\t\t\tmatchedFirst = wordCount\n\t\t\t\t}\n\t\t\t\tj = i + 1\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tmatchedFirst = -1\n\t\t\tif text[j:i] == first {\n\t\t\t\tmatchedFirst = wordCount\n\t\t\t}\n\t\t\tmatchedSecond = -1\n\t\t\tj = i + 1\n\t\t}\n\t}\n\n\treturn words\n}\n"
  },
  {
    "path": "One Edit Distance/kata.go",
    "content": "package One_Edit_Distance\n\nimport \"math\"\n\nfunc isOneEditDistance(s string, t string) bool {\n\tif s == t {\n\t\treturn false\n\t}\n\n\tif math.Abs(float64(len(s))-float64(len(t))) > 1 {\n\t\treturn false\n\t}\n\n\tvar c int\n\tif len(s) == len(t) {\n\t\tfor i := 0; i < len(t); i++ {\n\t\t\tif s[i] != t[i] {\n\t\t\t\tc++\n\t\t\t}\n\t\t}\n\t\treturn c == 1\n\t}\n\n\tif len(s) > len(t) {\n\t\tif len(t) == 0 {\n\t\t\treturn true\n\t\t}\n\t\tif s[:len(s)-1] == t {\n\t\t\treturn true\n\t\t}\n\t\tj := 0\n\t\tfor i := 0; i < len(s); i++ {\n\t\t\tif s[i] != t[j] {\n\t\t\t\tc++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tj++\n\t\t}\n\t\treturn c == 1 || c == 0\n\t}\n\n\tif string(t[0])+s == t {\n\t\treturn true\n\t}\n\tif s+string(t[len(t)-1]) == t {\n\t\treturn true\n\t}\n\n\tj := 0\n\tfor i := 0; i < len(t); i++ {\n\t\tif s[j] != t[i] {\n\t\t\tc++\n\t\t\tcontinue\n\t\t}\n\t\tj++\n\t}\n\treturn c == 1 || c == 0\n}\n"
  },
  {
    "path": "Online Stock Span/kata.go",
    "content": "package kata\n\ntype StockSpanner struct {\n\tprices []int\n}\n\nfunc Constructor() StockSpanner {\n\treturn StockSpanner{prices: make([]int, 0)}\n}\n\nfunc (this *StockSpanner) Next(price int) int {\n\tthis.prices = append(this.prices, price)\n\tif len(this.prices) == 1 {\n\t\treturn 1\n\t}\n\n\tvar c int\n\tfor i := len(this.prices) - 1; i >= 0; i-- {\n\t\tif this.prices[i] <= price {\n\t\t\tc++\n\t\t\tcontinue\n\t\t}\n\t\tbreak\n\t}\n\treturn c\n}\n\n/**\n * Your StockSpanner object will be instantiated and called as such:\n * obj := Constructor();\n * param_1 := obj.Next(price);\n */\n"
  },
  {
    "path": "Orders With Maximum Quantity Above Average/q.sql",
    "content": "WITH cte AS\n         (SELECT order_id,\n                 (SUM(quantity)/COUNT(product_id)) AS average_quantity,\n                 MAX(quantity) AS max_quantity\n          FROM OrdersDetails\n          GROUP BY order_id)\n\nSELECT order_id\nFROM cte AS c\nWHERE c.max_quantity >\n      (SELECT MAX(average_quantity)\n       FROM cte);"
  },
  {
    "path": "Palindrome Linked List/kata.go",
    "content": "package kata\n\ntype ListNode struct {\n\tVal  int\n\tNext *ListNode\n}\n\nfunc isPalindrome(head *ListNode) bool {\n\t_, ok := p(head, head)\n\treturn ok\n}\n\nfunc p(a *ListNode, b *ListNode) (*ListNode, bool) {\n\tif a.Next == nil {\n\t\tif a.Val != b.Val {\n\t\t\treturn nil, false\n\t\t}\n\t\treturn b.Next, true\n\t}\n\n\tc, ok := p(a.Next, b)\n\tif !ok {\n\t\treturn nil, false\n\t}\n\n\tif c.Val == a.Val {\n\t\treturn c.Next, true\n\t}\n\treturn nil, false\n}\n"
  },
  {
    "path": "Palindrome Number/kata.go",
    "content": "package kata\n\nfunc isPalindrome(x int) bool {\n\tif x < 0 {\n\t\treturn false\n\t}\n\n\tnums := make([]int, 0)\n\tfor x > 0 {\n\t\tk := x % 10\n\t\tx = x / 10\n\t\tnums = append(nums, k)\n\t}\n\n\tj := len(nums) - 1\n\tfor i := 0; i < len(nums)/2; i++ {\n\t\tif nums[j] != nums[i] {\n\t\t\treturn false\n\t\t}\n\t\tj--\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "Parsing A Boolean Expression/kata.go",
    "content": "package kata\n\nfunc parseBoolExpr(expression string) bool {\n\tv, _, _ := parseUnit(expression, 0)\n\treturn v\n}\n\nfunc IsBool(c byte) bool {\n\treturn c == 'f' || c == 't'\n}\n\nfunc parseBool(c byte) bool {\n\tif c == 'f' {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc IsNot(c byte) bool {\n\treturn c == '!'\n}\n\nfunc parseNot(expression string, i int) (bool, int) {\n\tvar value bool\n\tvar j int\n\tfor ; i < len(expression); i++ {\n\t\tif IsClosed(expression[i]) {\n\t\t\tj = i\n\t\t\tbreak\n\t\t}\n\n\t\tv, k, match := parseUnit(expression, i)\n\t\tif k != -1 {\n\t\t\ti = k\n\t\t}\n\t\tif match {\n\t\t\tvalue = v\n\t\t}\n\t}\n\treturn !value, j\n}\n\nfunc IsAnd(c byte) bool {\n\treturn c == '&'\n}\n\nfunc parseAnd(expression string, i int) (bool, int) {\n\tvar value *bool\n\tvar j int\n\tfor ; i < len(expression); i++ {\n\t\tif IsClosed(expression[i]) {\n\t\t\tj = i\n\t\t\tbreak\n\t\t}\n\n\t\tv, k, match := parseUnit(expression, i)\n\t\tif k != -1 {\n\t\t\ti = k\n\t\t}\n\t\tif match && value == nil {\n\t\t\tvalue = new(bool)\n\t\t\t*value = v\n\t\t\tmatch = false\n\t\t} else if match {\n\t\t\t*value = *value && v\n\t\t\tmatch = false\n\t\t}\n\n\t}\n\treturn *value, j\n}\n\nfunc IsOr(c byte) bool {\n\treturn c == '|'\n}\n\nfunc parseOr(expression string, i int) (bool, int) {\n\tvar value *bool\n\tvar j int\n\tfor ; i < len(expression); i++ {\n\t\tif IsClosed(expression[i]) {\n\t\t\tj = i\n\t\t\tbreak\n\t\t}\n\n\t\tv, k, match := parseUnit(expression, i)\n\t\tif k != -1 {\n\t\t\ti = k\n\t\t}\n\n\t\tif match && value == nil {\n\t\t\tvalue = new(bool)\n\t\t\t*value = v\n\t\t\tmatch = false\n\t\t} else if match {\n\t\t\t*value = *value || v\n\t\t\tmatch = false\n\t\t}\n\n\t}\n\treturn *value, j\n}\n\nfunc parseUnit(expression string, i int) (bool, int, bool) {\n\tvar v bool\n\tk := -1\n\tvar match bool\n\tif IsOr(expression[i]) {\n\t\tv, k = parseOr(expression, i+1)\n\t\tmatch = true\n\t} else if IsAnd(expression[i]) {\n\t\tv, k = parseAnd(expression, i+1)\n\t\tmatch = true\n\t} else if IsNot(expression[i]) {\n\t\tv, k = parseNot(expression, i+1)\n\t\tmatch = true\n\t} else if IsBool(expression[i]) {\n\t\tv = parseBool(expression[i])\n\t\tmatch = true\n\t\tk = -1\n\t}\n\treturn v, k, match\n}\n\nfunc IsClosed(c byte) bool {\n\treturn c == ')'\n}\n"
  },
  {
    "path": "Partition Array According to Given Pivot/kata.go",
    "content": "package kata\n\nimport \"container/list\"\n\nfunc pivotArray(nums []int, pivot int) []int {\n\n\tsmaller := list.New()\n\tmiddle := list.New()\n\tgreater := list.New()\n\n\tfor _, n := range nums {\n\t\tif n < pivot {\n\t\t\tsmaller.PushBack(n)\n\t\t} else if n == pivot {\n\t\t\tmiddle.PushBack(n)\n\t\t} else {\n\t\t\tgreater.PushBack(n)\n\t\t}\n\t}\n\n\tfor i := 0; i < len(nums); i++ {\n\t\tif smaller.Front() != nil {\n\t\t\tnums[i] = smaller.Front().Value.(int)\n\t\t\tsmaller.Remove(smaller.Front())\n\t\t} else if middle.Front() != nil {\n\t\t\tnums[i] = middle.Front().Value.(int)\n\t\t\tmiddle.Remove(middle.Front())\n\t\t} else {\n\t\t\tnums[i] = greater.Front().Value.(int)\n\t\t\tgreater.Remove(greater.Front())\n\t\t}\n\t}\n\n\treturn nums\n}\n"
  },
  {
    "path": "Partitioning Into Minimum Number Of Deci-Binary Numbers/kata.java",
    "content": "class Solution {\n    public int minPartitions(String n) {\n        if (n.length() == 1) {\n            return n.charAt(0)-48;\n        }\n        var lastDigit = -1;\n        for (var i = 0; i < n.length(); i++) {\n            var a = n.charAt(i)-48;\n            if (lastDigit == -1 || lastDigit < a) {\n                lastDigit = a;\n            }\n            if (lastDigit == 9) {\n                break;\n            }\n        }\n        return lastDigit;\n    }\n}"
  },
  {
    "path": "Pascal's Triangle/kata.go",
    "content": "package Pascal_s_Triangle\n\nfunc generate(numRows int) [][]int {\n\n\tif numRows == 1 {\n\t\treturn [][]int{[]int{1}}\n\t}\n\n\tif numRows == 2 {\n\t\treturn [][]int{[]int{1}, []int{1, 1}}\n\t}\n\n\to := make([][]int, numRows)\n\tl := 0\n\to[l] = []int{1}\n\tl++\n\to[l] = []int{1, 1}\n\n\tfor i := 2; i < numRows; i++ {\n\t\trow := make([]int, i+1)\n\t\trow[0] = 1\n\t\trow[len(row)-1] = 1\n\n\t\tk := 1\n\t\tfor j := 0; j < len(o[i-1])-1; j++ {\n\t\t\tn := o[i-1][j] + o[i-1][j+1]\n\t\t\trow[k] = n\n\t\t\tk++\n\t\t}\n\t\tl++\n\t\to[l] = row\n\t}\n\n\treturn o\n}\n"
  },
  {
    "path": "Pascal's Triangle II/kata.go",
    "content": "package Pascal_s_Triangle_II\n\nfunc getRow(rowIndex int) []int {\n\n\tif rowIndex == 0 {\n\t\treturn []int{1}\n\t}\n\n\tif rowIndex == 1 {\n\t\treturn []int{1, 1}\n\t}\n\n\to := make([]int, 0)\n\to = []int{1, 1}\n\n\tfor i := 2; i < rowIndex+1; i++ {\n\t\trow := make([]int, i+1)\n\t\trow[0] = 1\n\t\trow[len(row)-1] = 1\n\n\t\tk := 1\n\t\tfor j := 0; j < len(o)-1; j++ {\n\t\t\tn := o[j] + o[j+1]\n\t\t\trow[k] = n\n\t\t\tk++\n\t\t}\n\t\to = row\n\t}\n\n\treturn o\n}\n"
  },
  {
    "path": "Path Sum/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc hasPathSum(root *TreeNode, sum int) bool {\n\tif root == nil {\n\t\treturn false\n\t}\n\treturn pathSum(root, root.Val, sum)\n}\n\nfunc pathSum(root *TreeNode, v int, sum int) bool {\n\tif root.Left == nil && root.Right == nil {\n\t\tif sum == v {\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t}\n\tvar l bool\n\tif root.Left != nil {\n\t\tl = pathSum(root.Left, v+root.Left.Val, sum)\n\t}\n\tvar r bool\n\tif root.Right != nil {\n\t\tr = pathSum(root.Right, v+root.Right.Val, sum)\n\t}\n\tif l || r {\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "Patients With a Condition/q.sql",
    "content": "SELECT patient_id, patient_name, conditions FROM Patients WHERE conditions LIKE '% DIAB1%' OR conditions LIKE 'DIAB1%';"
  },
  {
    "path": "Peak Index in a Mountain Array/kata.go",
    "content": "package kata\n\nfunc peakIndexInMountainArray(A []int) int {\n\tmax := -1\n\tidx := -1\n\tfor i := 0; i < len(A); i++ {\n\t\tif max == -1 || A[i] > max {\n\t\t\tmax = A[i]\n\t\t\tidx = i\n\t\t}\n\t}\n\treturn idx\n}\n"
  },
  {
    "path": "Peeking Iterator/kata.go",
    "content": "package kata\n\n/*   Below is the interface for Iterator, which is already defined for you.\n *\n *   type Iterator struct {\n *\n *   }\n *\n *   func (this *Iterator) hasNext() bool {\n *      // Returns true if the iteration has more elements.\n *   }\n *\n *   func (this *Iterator) next() int {\n *      // Returns the next element in the iteration.\n *   }\n */\n\ntype PeekingIterator struct {\n\titer *Iterator\n}\n\nfunc Constructor(iter *Iterator) *PeekingIterator {\n\treturn &PeekingIterator{\n\t\titer: iter,\n\t}\n}\n\nfunc (pt *PeekingIterator) hasNext() bool {\n\treturn pt.iter.hasNext()\n}\n\nfunc (pt *PeekingIterator) next() int {\n\treturn pt.iter.next()\n}\n\nfunc (pt *PeekingIterator) peek() int {\n\tn := pt.iter.next()\n\tpt.iter.index--\n\treturn n\n}\n"
  },
  {
    "path": "Percentage of Letter in String/kata.go",
    "content": "package Percentage_of_Letter_in_String\n\nimport \"math\"\n\nfunc percentageLetter(s string, letter byte) int {\n\tc := 0\n\tfor _, char := range s {\n\t\tif rune(letter) == char {\n\t\t\tc++\n\t\t}\n\t}\n\n\tif c > 0 {\n\t\treturn int(math.Floor(float64(c) / float64(len(s)) * 100))\n\t}\n\n\treturn c\n}\n"
  },
  {
    "path": "Percentage of Users Attended a Contest/q.sql",
    "content": "SELECT\n  contest_id,\n  ROUND(\n    COUNT(*) / (\n      SELECT\n        COUNT(*)\n      FROM\n        Users\n    ) * 100,\n    2\n  ) AS percentage\nFROM\n  Register AS r\n  INNER JOIN Users AS u ON u.user_id = r.user_id\nGROUP BY\n  contest_id\nORDER BY\n  percentage DESC,\n  contest_id ASC;\n"
  },
  {
    "path": "Perfect Number/kata.go",
    "content": "package Perfect_Number\n\nimport \"math\"\n\nfunc checkPerfectNumber(num int) bool {\n\n\tvar sum float64\n\tfor i := 1; i <= int(math.Sqrt(float64(num))); i++ {\n\t\tif num%i == 0 {\n\t\t\tif num/i == i {\n\t\t\t\tsum += float64(i)\n\t\t\t} else {\n\t\t\t\tsum += float64(i) + float64(num)/float64(i)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn int(sum-float64(num)) == num\n}\n"
  },
  {
    "path": "Perform String Shifts/kata.go",
    "content": "package kata\n\nconst (\n\tRightShiftMode int = 1\n\tLeftShiftMode  int = 0\n)\n\nfunc stringShift(s string, shift [][]int) string {\n\tb := []byte(s)\n\tfor _, operation := range shift {\n\t\tamount := operation[1]\n\t\tshiftMode := operation[0]\n\t\tif shiftMode == RightShiftMode {\n\t\t\tb = RightShift(b, amount)\n\t\t} else if shiftMode == LeftShiftMode {\n\t\t\tb = LeftShift(b, amount)\n\t\t}\n\t}\n\treturn string(b)\n}\n\nfunc LeftShift(b []byte, amount int) []byte {\n\tif amount == 0 {\n\t\treturn b\n\t}\n\n\tif len(b) <= 2 {\n\t\treturn b\n\t}\n\n\ttmp := b[0]\n\tfor i := 0; i < len(b)-1; i++ {\n\t\tb[i] = b[i+1]\n\t}\n\tb[len(b)-1] = tmp\n\n\treturn LeftShift(b, amount-1)\n}\n\nfunc RightShift(b []byte, amount int) []byte {\n\tif amount == 0 {\n\t\treturn b\n\t}\n\n\tif len(b) <= 2 {\n\t\treturn b\n\t}\n\n\ttmp := b[len(b)-1]\n\tfor i := len(b) - 1; i >= 1; i-- {\n\t\tb[i] = b[i-1]\n\t}\n\tb[0] = tmp\n\n\treturn RightShift(b, amount-1)\n}\n"
  },
  {
    "path": "Permutations/kata.go",
    "content": "package kata\n\nfunc permute(nums []int) [][]int {\n\tpermutations := make([][]int, 0)\n\tperm(nums, &permutations, 0)\n\treturn permutations\n}\n\nfunc perm(nums []int, permutations *[][]int, i int) {\n\tif i > len(nums) {\n\t\tnumsCopy := make([]int, len(nums))\n\t\tcopy(numsCopy, nums)\n\t\t*permutations = append(*permutations, numsCopy)\n\t\treturn\n\t}\n\tperm(nums, permutations, i+1)\n\tfor j := i + 1; j < len(nums); j++ {\n\t\t// swap i and j value\n\t\tnums[i], nums[j] = nums[j], nums[i]\n\t\tperm(nums, permutations, i+1)\n\t\t// revert swap between i and j values\n\t\tnums[i], nums[j] = nums[j], nums[i]\n\t}\n}\n"
  },
  {
    "path": "Permutations II/kata.go",
    "content": "package Permutations_II\n\nfunc permuteUnique(nums []int) [][]int {\n\tpermutations := make([][]int, 0)\n\tduplicates := make(map[int]bool)\n\tperm(nums, &permutations, 0, duplicates)\n\treturn permutations\n}\n\nfunc perm(nums []int, permutations *[][]int, i int, duplicates map[int]bool) {\n\tif i > len(nums) {\n\t\tn := 1\n\t\tvar sum int\n\t\tfor i := 0; i < len(nums); i++ {\n\t\t\tsum += nums[i] * n\n\t\t\tn = n * 10\n\t\t}\n\n\t\tif duplicates[sum] {\n\t\t\treturn\n\t\t}\n\n\t\tduplicates[sum] = true\n\n\t\tnumsCopy := make([]int, len(nums))\n\t\tcopy(numsCopy, nums)\n\t\t*permutations = append(*permutations, numsCopy)\n\t\treturn\n\t}\n\tperm(nums, permutations, i+1, duplicates)\n\tfor j := i + 1; j < len(nums); j++ {\n\t\tnums[i], nums[j] = nums[j], nums[i]\n\t\tperm(nums, permutations, i+1, duplicates)\n\t\tnums[i], nums[j] = nums[j], nums[i]\n\t}\n}\n"
  },
  {
    "path": "Plus One/kata.go",
    "content": "package kata\n\nvar one []int = []int{1}\n\nfunc plusOne(digits []int) []int {\n\tif len(digits) == 0 {\n\t\treturn one\n\t}\n\n\tvar reminder bool\n\tif digits[len(digits)-1] == 9 {\n\t\tfor i := len(digits) - 1; i >= 0; i-- {\n\t\t\tif reminder && (digits[i]+1) == 10 {\n\t\t\t\tdigits[i] = 0\n\t\t\t\treminder = true\n\t\t\t} else if reminder {\n\t\t\t\tdigits[i] += 1\n\t\t\t\treminder = false\n\t\t\t\tbreak\n\t\t\t} else if (digits[i] + 1) == 10 {\n\t\t\t\tdigits[i] = 0\n\t\t\t\treminder = true\n\t\t\t}\n\t\t}\n\n\t\tif reminder {\n\t\t\treturn append(one, digits...)\n\t\t}\n\n\t} else {\n\t\tdigits[len(digits)-1] = digits[len(digits)-1] + 1\n\t}\n\treturn digits\n}\n"
  },
  {
    "path": "Points That Intersect With Cars/kata.go",
    "content": "package main\n\nimport \"sort\"\n\nfunc numberOfPoints(nums [][]int) int {\n\tsort.Slice(nums, func(i, j int) bool {\n\t\treturn nums[i][0] < nums[j][0]\n\t})\n\n\tvar left, right = nums[0][0], nums[0][1]\n\tvar sum = 0\n\tfor _, num := range nums[1:] {\n\t\tif num[0] > left && right < num[0] {\n\t\t\tsum += right - (left - 1)\n\t\t\tright = num[1]\n\t\t\tleft = num[0]\n\t\t} else if num[1] > right {\n\t\t\tright = num[1]\n\t\t}\n\t}\n\n\tsum += right - (left - 1)\n\n\treturn sum\n}\n"
  },
  {
    "path": "Populating Next Right Pointers in Each Node/kata.go",
    "content": "package Populating_Next_Right_Pointers_in_Each_Node\n\n/**\n * Definition for a Node.\n * type Node struct {\n *     Val int\n *     Left *Node\n *     Right *Node\n *     Next *Node\n * }\n */\n\nfunc connect(root *Node) *Node {\n\tif root == nil {\n\t\treturn nil\n\t}\n\tf(root.Left, root.Right)\n\treturn root\n}\n\nfunc f(l *Node, r *Node) {\n\tif l == nil || r == nil {\n\t\treturn\n\t}\n\tl.Next = r\n\tf(r.Left, r.Right)\n\tf(l.Right, r.Left)\n\tf(l.Left, l.Right)\n\treturn\n}\n"
  },
  {
    "path": "Positions of Large Groups/kata.go",
    "content": "package kata\n\nfunc largeGroupPositions(S string) [][]int {\n\tlastSeenChar := S[0]\n\tfirstIdx := 0\n\tc := 1\n\n\tgroups := make([][]int, 0)\n\tfor i := 1; i < len(S); i++ {\n\t\tif i == len(S)-1 {\n\t\t\tk := i - 1\n\t\t\tif lastSeenChar == S[i] {\n\t\t\t\tk = i\n\t\t\t\tc++\n\t\t\t}\n\t\t\tif c >= 3 {\n\t\t\t\tgroups = append(groups, []int{firstIdx, k})\n\t\t\t}\n\t\t} else if lastSeenChar != S[i] {\n\t\t\tif c >= 3 {\n\t\t\t\tgroups = append(groups, []int{firstIdx, i - 1})\n\t\t\t}\n\t\t\tfirstIdx = i\n\t\t\tlastSeenChar = S[i]\n\t\t\tc = 1\n\t\t\tcontinue\n\t\t} else {\n\t\t\tc++\n\t\t}\n\t}\n\treturn groups\n}\n"
  },
  {
    "path": "Power of Four/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc isPowerOfFour(num int) bool {\n\tif 0 == num {\n\t\treturn false\n\t}\n\tk := math.Log(float64(num)) / math.Log(4)\n\treturn math.Floor(k) == k\n}\n"
  },
  {
    "path": "Power of Three/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc isPowerOfThree(num int) bool {\n\tif 0 == num {\n\t\treturn false\n\t}\n\tk := math.Log(float64(num)) / math.Log(3)\n\tn1 := math.Pow(3, float64(int(k)))\n\n\treturn int(n1) == num\n}\n"
  },
  {
    "path": "Power of Two/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc isPowerOfTwo(n int) bool {\n\tif 0 == n {\n\t\treturn false\n\t}\n\tk := math.Log2(float64(n))\n\treturn math.Floor(k) == k\n}\n"
  },
  {
    "path": "Powerful Integers/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc powerfulIntegers(x int, y int, bound int) []int {\n\ti := 0\n\tj := 0\n\n\tset := make(map[int]bool)\n\tvar hit bool\nouterLoop:\n\tfor {\n\t\txi := int(math.Pow(float64(x), float64(i)))\n\t\tif xi >= bound || (hit && x == 1) {\n\t\t\tbreak\n\t\t}\n\t\ti++\n\t\tfor {\n\t\t\thit = true\n\t\t\tyj := int(math.Pow(float64(y), float64(j)))\n\t\t\tz := xi + yj\n\t\t\tif z > bound {\n\t\t\t\tj = 0\n\t\t\t\tcontinue outerLoop\n\t\t\t}\n\n\t\t\tset[z] = true\n\t\t\tif y == 1 {\n\t\t\t\tj = 0\n\t\t\t\tcontinue outerLoop\n\t\t\t}\n\n\t\t\tj++\n\t\t}\n\t}\n\n\tnums := make([]int, len(set))\n\ti = 0\n\tfor z := range set {\n\t\tnums[i] = z\n\t\ti++\n\t}\n\n\treturn nums\n}\n"
  },
  {
    "path": "Prefix and Suffix Search/kata.go",
    "content": "package kata\n\ntype WordFilter struct {\n\twords []string\n}\n\nfunc Constructor(words []string) WordFilter {\n\treturn WordFilter{words: words}\n}\n\nfunc (this *WordFilter) F(prefix string, suffix string) int {\n\tif prefix == \"\" && suffix == \"\" && len(this.words) != 0 {\n\t\treturn 0\n\t}\n\tfor i := len(this.words) - 1; i >= 0; i-- {\n\t\tif len(suffix) > len(this.words[i]) {\n\t\t\tcontinue\n\t\t}\n\t\tif len(prefix) > len(this.words[i]) {\n\t\t\tcontinue\n\t\t}\n\n\t\tif suffix != \"\" && prefix != \"\" {\n\t\t\ts := this.words[i][len(this.words[i])-len(suffix):]\n\t\t\tp := this.words[i][:len(prefix)]\n\t\t\tif s == suffix && p == prefix {\n\t\t\t\treturn i\n\t\t\t}\n\t\t} else if suffix != \"\" {\n\t\t\ts := this.words[i][len(this.words[i])-len(suffix):]\n\t\t\tif s == suffix {\n\t\t\t\treturn i\n\t\t\t}\n\t\t\tcontinue\n\t\t} else if prefix != \"\" {\n\t\t\tp := this.words[i][:len(prefix)]\n\t\t\tif p == prefix {\n\t\t\t\treturn i\n\t\t\t}\n\t\t}\n\t}\n\treturn -1\n}\n\n/**\n * Your WordFilter object will be instantiated and called as such:\n * obj := Constructor(words);\n * param_1 := obj.F(prefix,suffix);\n */\n"
  },
  {
    "path": "Primary Department for Each Employee/q.sql",
    "content": "SELECT employee_id,\n       department_id\nFROM Employee\nGROUP BY employee_id\nHAVING COUNT(*) = 1\nUNION\nSELECT employee_id,\n       department_id\nFROM Employee\nWHERE primary_flag = \"Y\"\nGROUP BY employee_id"
  },
  {
    "path": "Prime Number of Set Bits in Binary Representation/kata.java",
    "content": "import java.math.BigInteger;\n\nclass Solution {\n    public int countPrimeSetBits(int left, int right) {\n        var count = 0;\n        for (var num = left; num <= right; num++) {\n            var bitCount = BigInteger.valueOf(Integer.bitCount(num));\n            if (bitCount.isProbablePrime(30)) {\n                count++;\n            }\n        }\n        return count;\n    }\n}"
  },
  {
    "path": "Print Immutable Linked List in Reverse/kata.go",
    "content": "package Print_Immutable_Linked_List_in_Reverse\n\n/*   Below is the interface for ImmutableListNode, which is already defined for you.\n *\n *   type ImmutableListNode struct {\n *\n *   }\n *\n *   func (this *ImmutableListNode) getNext() ImmutableListNode {\n *\t\t// return the next node.\n *   }\n *\n *   func (this *ImmutableListNode) printValue() {\n *\t\t// print the value of this node.\n *   }\n */\n\nfunc printLinkedListInReverse(head ImmutableListNode) {\n\tn := head.getNext()\n\tif n != nil {\n\t\tprintLinkedListInReverse(n)\n\t}\n\thead.printValue()\n}\n"
  },
  {
    "path": "Product Sales Analysis I/q.sql",
    "content": "SELECT p.product_name,\n       s.year,\n       s.price\nFROM Product AS p\n         INNER JOIN Sales AS s\n                    ON s.product_id = p.product_id\nGROUP BY s.sale_id;"
  },
  {
    "path": "Product Sales Analysis II/q.sql",
    "content": "SELECT product_id, SUM(quantity) AS total_quantity FROM Sales GROUP BY product_id"
  },
  {
    "path": "Product of Array Except Self/kata.go",
    "content": "package kata\n\nfunc productExceptSelf(nums []int) []int {\n\tsum := 0\n\tsumZero := 0\n\tfirst := true\n\tzeros := 0\n\tfor _, n := range nums {\n\t\tif n == 0 {\n\t\t\tsumZero *= n\n\t\t\tzeros++\n\t\t\tif zeros > 1 {\n\t\t\t\tsum *= n\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif first {\n\t\t\tsum = 1\n\t\t\tsumZero = 1\n\t\t\tfirst = false\n\t\t}\n\n\t\tsum *= n\n\t\tsumZero *= n\n\t}\n\tfor i := range nums {\n\t\tif nums[i] == 0 {\n\t\t\tnums[i] = sum\n\t\t\tcontinue\n\t\t}\n\t\tnums[i] = sumZero / nums[i]\n\t}\n\treturn nums\n}\n"
  },
  {
    "path": "Product of the Last K Numbers/kata.go",
    "content": "package kata\n\ntype ProductOfNumbers struct {\n\tnumbers []int\n}\n\nfunc Constructor() ProductOfNumbers {\n\treturn ProductOfNumbers{numbers: make([]int, 0)}\n}\n\nfunc (this *ProductOfNumbers) Add(num int) {\n\tthis.numbers = append(this.numbers, num)\n}\n\nfunc (this *ProductOfNumbers) GetProduct(k int) int {\n\tif len(this.numbers) < k {\n\t\tpanic(\"k is greater than len(this.numbers)\")\n\t}\n\n\tsum := 1\n\tfor _, n := range this.numbers[len(this.numbers)-k:] {\n\t\tsum = sum * n\n\t}\n\treturn sum\n}\n\n/**\n * Your ProductOfNumbers object will be instantiated and called as such:\n * obj := Constructor();\n * obj.Add(num);\n * param_2 := obj.GetProduct(k);\n */\n"
  },
  {
    "path": "Product's Price for Each Store/q.sql",
    "content": "SELECT\n    product_id,\n    MAX(store1) AS store1,\n    MAX(store2) AS store2,\n    MAX(store3) AS store3\nFROM\n    (\n        SELECT\n            product_id,\n            price AS store1,\n            NULL AS store2,\n            NULL AS store3\n        FROM\n            Products\n        WHERE\n                store = \"store1\"\n        UNION ALL\n        SELECT\n            product_id,\n            NULL AS store1,\n            price AS store2,\n            NULL AS store3\n        FROM\n            Products\n        WHERE\n                store = \"store2\"\n        UNION ALL\n        SELECT\n            product_id,\n            NULL AS store1,\n            NULL AS store2,\n            price AS store3\n        FROM\n            Products\n        WHERE\n                store = \"store3\"\n    ) AS transpose\nGROUP BY\n    product_id\n"
  },
  {
    "path": "Product's Worth Over Invoices/q.sql",
    "content": "SELECT\n    p.name,\n    COALESCE(SUM(rest), 0) AS rest,\n    COALESCE(SUM(paid), 0) AS paid,\n    COALESCE(SUM(canceled), 0) AS canceled,\n    COALESCE(SUM(refunded), 0) AS refunded\nFROM\n    Product AS p\n        LEFT JOIN Invoice AS i ON i.product_id = p.product_id\nGROUP BY\n    p.product_id\nORDER BY\n    p.name"
  },
  {
    "path": "Project Employees I/q.sql",
    "content": "SELECT project_id,\n       ROUND(SUM(e.experience_years)/COUNT(p.employee_id), 2) AS average_years\nFROM Project AS p\n         INNER JOIN Employee AS e ON p.employee_id = e.employee_id\nGROUP BY project_id;"
  },
  {
    "path": "Queries Quality and Percentage/q.sql",
    "content": "SELECT\n  query_name,\n  ROUND(SUM(rating / position) / COUNT(*), 2) AS quality,\n  ROUND(\n    (\n      SUM(CASE WHEN rating < 3 THEN 1 ELSE 0 END) / COUNT(*)\n    ) * 100,\n    2\n  ) AS poor_query_percentage\nFROM\n  Queries\nGROUP BY\n  query_name\n"
  },
  {
    "path": "Queries on Number of Points Inside a Circle/kata.java",
    "content": "class Solution {\n    public int[] countPoints(int[][] points, int[][] queries) {\n\n        var res = new int[queries.length];\n        var i = 0;\n        for (var query : queries) {\n            for (var point : points) {\n                // d= √(xA − xB)2 + (yA − yB)2\n                var distance = Math.sqrt(Math.pow(query[0]-point[0],2) + Math.pow(query[1]-point[1],2));\n                if (distance <= (double) query[2]) {\n                    res[i]++;\n                }\n            }\n            i++;\n        }\n        return res;\n    }\n}"
  },
  {
    "path": "Queries on a Permutation With Key/kata.go",
    "content": "package kata\n\nimport \"container/list\"\n\nfunc processQueries(queries []int, m int) []int {\n\n\tl := list.New()\n\n\tfor i := 1; i < m+1; i++ {\n\t\tl.PushBack(i)\n\t}\n\n\tidx := make([]int, len(queries))\n\tj := 0\n\tfor _, q := range queries {\n\t\tvar i int\n\t\tfor e := l.Front(); e != nil; e = e.Next() {\n\t\t\tif e.Value.(int) == q {\n\t\t\t\tl.MoveToFront(e)\n\t\t\t\tidx[j] = i\n\t\t\t\tj++\n\t\t\t\tbreak\n\t\t\t}\n\t\t\ti++\n\t\t}\n\t}\n\n\treturn idx\n}\n"
  },
  {
    "path": "README.md",
    "content": "# leetcode.com\n\nLeetcode solutions\n\nA collection of 500+ LeetCode problems that I've solved primarily in Go, SQL, and Java some of them definitely would deserve a refactoring.\n\nEach directory includes a solution to the problem and the directory name is the challenge name.\n"
  },
  {
    "path": "Random Pick Index/kata.go",
    "content": "package kata\n\nimport (\n\t\"math/rand\"\n\t\"time\"\n)\n\ntype Solution struct {\n\tseededRand *rand.Rand\n\tnums       []int\n}\n\nfunc Constructor(nums []int) Solution {\n\tvar seededRand *rand.Rand = rand.New(\n\t\trand.NewSource(time.Now().UnixNano()))\n\treturn Solution{\n\t\tseededRand: seededRand,\n\t\tnums:       nums,\n\t}\n}\n\nfunc (this *Solution) Pick(target int) int {\n\n\tidx := make(map[int][]int)\n\tfor i, _ := range this.nums {\n\t\tif target == this.nums[i] {\n\t\t\tv, ok := idx[target]\n\t\t\tif !ok {\n\t\t\t\tv = make([]int, 0)\n\t\t\t\tv = append(v, i)\n\t\t\t\tidx[target] = v\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tv = append(v, i)\n\t\t\tidx[target] = v\n\t\t}\n\t}\n\n\ti := this.seededRand.Intn(len(idx[target]))\n\n\treturn idx[target][i]\n}\n"
  },
  {
    "path": "Range Sum Query - Immutable/kata.go",
    "content": "package kata\n\ntype NumArray struct {\n\tnums []int\n}\n\nfunc Constructor(nums []int) NumArray {\n\treturn NumArray{nums: nums}\n}\n\nfunc (this *NumArray) SumRange(i int, j int) int {\n\tif j+1 > len(this.nums) || i > len(this.nums) || i < 0 || j < 0 || i > j {\n\t\treturn 0\n\t}\n\n\tvar sum int\n\tfor _, n := range this.nums[i : j+1] {\n\t\tsum += n\n\t}\n\treturn sum\n}\n\n/**\n * Your NumArray object will be instantiated and called as such:\n * obj := Constructor(nums);\n * param_1 := obj.SumRange(i,j);\n */\n"
  },
  {
    "path": "Range Sum Query - Mutable/kata.go",
    "content": "package kata\n\ntype NumArray struct {\n\tnums []int\n}\n\nfunc Constructor(nums []int) NumArray {\n\treturn NumArray{\n\t\tnums: nums,\n\t}\n}\n\nfunc (this *NumArray) Update(i int, val int) {\n\tif i > len(this.nums) {\n\t\treturn\n\t}\n\n\tthis.nums[i] = val\n}\n\nfunc (this *NumArray) SumRange(i int, j int) int {\n\tvar sum int\n\tfor _, n := range this.nums[i : j+1] {\n\t\tsum += n\n\t}\n\treturn sum\n}\n\n/**\n * Your NumArray object will be instantiated and called as such:\n * obj := Constructor(nums);\n * obj.Update(i,val);\n * param_2 := obj.SumRange(i,j);\n */\n"
  },
  {
    "path": "Range Sum Query 2D - Immutable/kata.go",
    "content": "package kata\n\ntype NumMatrix struct {\n\tvalues [][]int\n}\n\nfunc Constructor(matrix [][]int) NumMatrix {\n\treturn NumMatrix{\n\t\tvalues: matrix,\n\t}\n}\n\nfunc (this *NumMatrix) SumRegion(row1 int, col1 int, row2 int, col2 int) int {\n\tvar sum int\n\tfor i := row1; i <= row2; i++ {\n\t\tfor j := col1; j <= col2; j++ {\n\t\t\tsum += this.values[i][j]\n\t\t}\n\t}\n\treturn sum\n}\n\n/**\n * Your NumMatrix object will be instantiated and called as such:\n * obj := Constructor(matrix);\n * param_1 := obj.SumRegion(row1,col1,row2,col2);\n */\n"
  },
  {
    "path": "Range Sum of BST/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc rangeSumBST(root *TreeNode, L int, R int) int {\n\treturn f(root, L, R, 0)\n}\n\nfunc f(node *TreeNode, L int, R int, sum int) int {\n\tif node.Val >= L && node.Val <= R {\n\t\tsum = sum + node.Val\n\t}\n\n\tif node.Left != nil && L < node.Val {\n\t\tsum = f(node.Left, L, R, sum)\n\t}\n\tif node.Right != nil && node.Val < R {\n\t\tsum = f(node.Right, L, R, sum)\n\t}\n\n\treturn sum\n}\n"
  },
  {
    "path": "Rank Scores/kata.sql",
    "content": "package kata\n\nselect\nScore,\ndense_rank() over(order by Score desc) \"Rank\"\nfrom Scores;\n"
  },
  {
    "path": "Rank Transform of an Array/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc arrayRankTransform(arr []int) []int {\n\tif len(arr) == 0 {\n\t\treturn arr\n\t}\n\tif len(arr) == 1 {\n\t\treturn []int{1}\n\t}\n\ttmp := make([]int, len(arr))\n\tcopy(tmp, arr)\n\tset := make(map[int]int)\n\tsort.Ints(tmp)\n\tr := 1\n\n\tfor _, elm := range tmp {\n\t\t_, ok := set[elm]\n\t\tif !ok {\n\t\t\tset[elm] = r\n\t\t\tr++\n\t\t}\n\t}\n\tfor i := range arr {\n\t\tarr[i] = set[arr[i]]\n\t}\n\treturn arr\n}\n"
  },
  {
    "path": "Ransom Note/kata.go",
    "content": "package kata\n\nfunc canConstruct(ransomNote string, magazine string) bool {\n\tif len(ransomNote) > len(magazine) {\n\t\treturn false\n\t}\n\tset := make(map[byte]int)\n\tvar i int\n\tfor i = 0; i < len(magazine); i++ {\n\t\tset[magazine[i]]++\n\t}\n\tvar c int\n\tvar ok bool\n\tfor i = 0; i < len(ransomNote); i++ {\n\t\tc, ok = set[ransomNote[i]]\n\t\tif !ok || c <= 0 {\n\t\t\treturn false\n\t\t}\n\t\tset[ransomNote[i]]--\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "Rearrange Array Elements by Sign/kata.go",
    "content": "package kata\n\nimport \"container/list\"\n\nfunc rearrangeArray(nums []int) []int {\n\n\tnegative := list.New()\n\tpositive := list.New()\n\n\tfor _, n := range nums {\n\t\tif n < 0 {\n\t\t\tnegative.PushBack(n)\n\t\t} else {\n\t\t\tpositive.PushBack(n)\n\t\t}\n\t}\n\n\tnums[0] = positive.Front().Value.(int)\n\tpositive.Remove(positive.Front())\n\n\tfor i := 1; i < len(nums); i++ {\n\t\tif i%2 == 1 {\n\t\t\tnums[i] = negative.Front().Value.(int)\n\t\t\tnegative.Remove(negative.Front())\n\t\t} else {\n\t\t\tnums[i] = positive.Front().Value.(int)\n\t\t\tpositive.Remove(positive.Front())\n\t\t}\n\t}\n\n\treturn nums\n}\n"
  },
  {
    "path": "Rearrange Characters to Make Target String/kata.go",
    "content": "package kata\n\nfunc rearrangeCharacters(s string, target string) int {\n\ttargetCharStats := [26]int{}\n\tfor i := range target {\n\t\ttargetCharStats[normalise(int(target[i]))]++\n\t}\n\n\tsCharStats := [26]int{}\n\tfor i := range s {\n\t\tsCharStats[normalise(int(s[i]))]++\n\t}\n\n\ttargetCount := -1\n\tfor i := 0; i < 26; i++ {\n\t\tif (sCharStats[i] == 0 && targetCharStats[i] == 0) ||\n\t\t\t(sCharStats[i] > 0 && targetCharStats[i] == 0) {\n\t\t\tcontinue\n\t\t}\n\t\tif targetCharStats[i] > 0 && sCharStats[i] == 0 {\n\t\t\treturn 0\n\t\t}\n\n\t\tif sCharStats[i] >= targetCharStats[i] {\n\t\t\tpossibleTargetCount := float64(sCharStats[i]) / float64(targetCharStats[i])\n\n\t\t\tif targetCount == -1 || int(possibleTargetCount) < targetCount {\n\t\t\t\ttargetCount = int(possibleTargetCount)\n\t\t\t}\n\t\t} else {\n\t\t\treturn 0\n\t\t}\n\t}\n\n\treturn targetCount\n}\n\nfunc normalise(a int) int {\n\treturn a - 97\n}\n"
  },
  {
    "path": "Rearrange Products Table/q.sql",
    "content": "SELECT product_id,\n       \"store1\" AS store,\n       store1 AS price\nFROM Products\nWHERE store1 IS NOT NULL\nUNION ALL\nSELECT product_id,\n       \"store2\" AS store,\n       store2 AS price\nFROM Products\nWHERE store2 IS NOT NULL\nUNION ALL\nSELECT product_id,\n       \"store3\" AS store,\n       store3 AS price\nFROM Products\nWHERE store3 IS NOT NULL"
  },
  {
    "path": "Rearrange Spaces Between Words/kata.go",
    "content": "package kata\n\nfunc reorderSpaces(text string) string {\n\n\tvar words [][]byte\n\tvar spaceCount int\n\tvar word []byte\n\tfor i := 0; i < len(text); i++ {\n\n\t\tif text[i] == 32 || len(text)-1 == i {\n\n\t\t\tif len(text)-1 == i && text[i] != 32 {\n\t\t\t\tword = append(word, text[i])\n\t\t\t} else {\n\t\t\t\tspaceCount++\n\t\t\t}\n\n\t\t\tif len(word) != 0 {\n\t\t\t\twords = append(words, word)\n\t\t\t\tword = []byte{}\n\t\t\t}\n\n\t\t} else {\n\t\t\tword = append(word, text[i])\n\t\t}\n\t}\n\n\tif len(words) == 1 && spaceCount == 0 {\n\t\treturn text\n\t}\n\n\tvar inbetweenCount int\n\tif len(words) == 1 {\n\t\tinbetweenCount = 1\n\t} else {\n\t\tinbetweenCount = (len(words) - 1)\n\t}\n\n\tmod := spaceCount % inbetweenCount\n\tspaceCount = spaceCount / inbetweenCount\n\n\tvar space string\n\tfor i := 0; i < spaceCount; i++ {\n\t\tspace += \" \"\n\t}\n\n\tvar restSpace string\n\tfor i := 0; i < mod; i++ {\n\t\trestSpace += \" \"\n\t}\n\n\tif len(words) == 1 {\n\t\treturn string(words[0]) + space\n\t}\n\n\ttext = \"\"\n\tfor i, word := range words {\n\t\tif len(words)-1 == i {\n\t\t\ttext += string(word) + restSpace\n\t\t} else {\n\n\t\t\ttext += string(word) + space\n\t\t}\n\n\t}\n\n\treturn text\n\n}\n"
  },
  {
    "path": "Rearrange Words in a Sentence/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc arrangeWords(text string) string {\n\tif len(text) == 0 {\n\t\treturn text\n\t}\n\n\ttype Word struct {\n\t\tvalue []byte\n\t\tidx   int\n\t}\n\n\tword := make([]byte, 0)\n\twordEmpty := make([]byte, 0)\n\twordList := make([]Word, 0)\n\tvar wordCounter int\n\tfor i := 0; i < len(text); i++ {\n\t\tif text[i] != ' ' {\n\t\t\tword = append(word, text[i])\n\t\t}\n\n\t\tif text[i] == ' ' || len(text)-1 == i {\n\t\t\twordList = append(wordList, Word{value: word, idx: wordCounter})\n\t\t\tword = wordEmpty\n\t\t\twordCounter++\n\t\t}\n\t}\n\n\tsort.Slice(wordList, func(i, j int) bool {\n\t\tif len(wordList[i].value) == len(wordList[j].value) && wordList[i].idx < wordList[j].idx {\n\t\t\treturn true\n\t\t} else if len(wordList[i].value) < len(wordList[j].value) {\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t})\n\n\tif len(wordList) == 0 {\n\t\treturn text\n\t}\n\n\tif wordList[0].value[0] >= 97 && wordList[0].value[0] <= 122 {\n\t\twordList[0].value[0] = wordList[0].value[0] - 32\n\t}\n\n\ttext = \"\"\n\ttext += string(wordList[0].value) + \" \"\n\n\tfor _, word := range wordList[1:] {\n\t\tif word.value[0] >= 65 && word.value[0] <= 90 {\n\t\t\tword.value[0] = word.value[0] + 32\n\t\t}\n\n\t\ttext += string(word.value) + \" \"\n\t}\n\treturn text[:len(text)-1]\n}\n"
  },
  {
    "path": "Recyclable and Low Fat Products/q.sql",
    "content": "SELECT product_id FROM Products WHERE low_fats = \"Y\" AND recyclable = \"Y\";"
  },
  {
    "path": "Redistribute Characters to Make All Strings Equal/kata.go",
    "content": "package kata\n\nfunc makeEqual(words []string) bool {\n\tcharStats := [26]int{}\n\tcountOfchars := 0\n\tfor _, word := range words {\n\t\tfor _, codepoint := range word {\n\t\t\tvar normalisedCodepoint = codepoint - 97\n\t\t\tcharStats[normalisedCodepoint]++\n\t\t\tcountOfchars++\n\t\t}\n\t}\n\n\tif countOfchars%len(words) == 1 {\n\t\treturn false\n\t}\n\n\tfor _, oneCharStat := range charStats {\n\t\tif oneCharStat > 0 && oneCharStat%len(words) != 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "Reduce Array Size to The Half/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc minSetSize(arr []int) int {\n\tif len(arr) < 2 {\n\t\treturn -1\n\t}\n\tif len(arr) == 2 {\n\t\treturn 1\n\t}\n\n\tcounter := make(map[int]int)\n\tfor i := range arr {\n\t\tcounter[arr[i]]++\n\t}\n\tif len(counter) == 1 {\n\t\treturn 1\n\t}\n\n\tcountes := make([]int, len(counter))\n\tvar i int\n\tfor _, c := range counter {\n\t\tcountes[i] = c\n\t\ti++\n\t}\n\n\tsort.Slice(countes, func(i, j int) bool {\n\t\treturn countes[i] > countes[j]\n\t})\n\n\thalf := len(arr) / 2\n\tvar sum int\n\tvar many int\n\tfor _, c := range countes {\n\t\tsum += c\n\t\tmany++\n\t\tif sum >= half {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn many\n}\n"
  },
  {
    "path": "Reformat Department Table/q.sql",
    "content": "\nWITH cte AS (SELECT\n    id,\n    case when month = \"Jan\" then revenue end as Jan_Revenue,\n    case when month = \"Feb\" then revenue end as Feb_Revenue,\n    case when month = \"Mar\" then revenue end as Mar_Revenue,\n    case when month = \"Apr\" then revenue end as Apr_Revenue,\n    case when month = \"May\" then revenue end as May_Revenue,\n    case when month = \"Jun\" then revenue end as Jun_Revenue,\n    case when month = \"Jul\" then revenue end as Jul_Revenue,\n    case when month = \"Aug\" then revenue end as Aug_Revenue,\n    case when month = \"Sep\" then revenue end as Sep_Revenue,\n    case when month = \"Oct\" then revenue end as Oct_Revenue,\n    case when month = \"Nov\" then revenue end as Nov_Revenue,\n    case when month = \"Dec\" then revenue end as Dec_Revenue\nFROM Department)\n\n\nSELECT id,\n    MAX(Jan_Revenue) AS Jan_Revenue,\n    MAX(Feb_Revenue) AS Feb_Revenue,\n    MAX(Mar_Revenue) AS Mar_Revenue,\n    MAX(Apr_Revenue) AS Apr_Revenue,\n    MAX(May_Revenue) AS May_Revenue,\n    MAX(Jun_Revenue) AS Jun_Revenue,\n    MAX(Jul_Revenue) AS Jul_Revenue,\n    MAX(Aug_Revenue) AS Aug_Revenue,\n    MAX(Sep_Revenue) AS Sep_Revenue,\n    MAX(Oct_Revenue) AS Oct_Revenue,\n    MAX(Nov_Revenue) AS Nov_Revenue,\n    MAX(Dec_Revenue) AS Dec_Revenue\nFROM cte GROUP BY id;"
  },
  {
    "path": "Relative Ranks/kata.go",
    "content": "package kata\n\nimport (\n\t\"sort\"\n\t\"strconv\"\n)\n\nfunc findRelativeRanks(nums []int) []string {\n\ttmp := make([]int, len(nums))\n\tcopy(tmp, nums)\n\tscores := []string{\"Gold Medal\", \"Silver Medal\", \"Bronze Medal\"}\n\tsort.Slice(tmp, func(i, j int) bool {\n\t\treturn tmp[i] > tmp[j]\n\t})\n\tres := make([]string, len(nums))\n\tset := make(map[int]string, len(nums))\n\tfor i, n := range tmp {\n\t\tif len(scores) > 0 {\n\t\t\tset[n] = scores[0]\n\t\t\tscores = scores[1:]\n\t\t\tcontinue\n\t\t}\n\t\tset[n] = strconv.Itoa(i + 1)\n\t}\n\tfor i, n := range nums {\n\t\tres[i] = set[n]\n\t}\n\treturn res\n}\n"
  },
  {
    "path": "Remove All Adjacent Duplicates In String/kata.java",
    "content": "class Solution {\n    public String removeDuplicates(String s) {\n        var sb = new StringBuilder(s);\n        for (var i = 1; i < sb.length(); i++) {\n            if (sb.charAt(i) == sb.charAt(i-1)) {\n                sb.deleteCharAt(i);\n                sb.deleteCharAt(i-1);\n                if (i - 2 >= 0) i = i - 2;\n                else i = 0;\n            }\n        }\n        return sb.toString();\n    }\n}"
  },
  {
    "path": "Remove Colored Pieces if Both Neighbors are the Same Color/kata.go",
    "content": "package Remove_Colored_Pieces_if_Both_Neighbors_are_the_Same_Color\n\nfunc winnerOfGame(colors string) bool {\n\n\tif len(colors) < 3 {\n\t\treturn false\n\t}\n\n\tcb := []byte(colors)\n\n\ta := 0\n\tb := 0\n\n\tfor i := 2; i < len(cb); i++ {\n\t\tif cb[i-2] == 'A' && cb[i-1] == 'A' && cb[i] == 'A' {\n\t\t\ta++\n\t\t\tcb[i-2] = 'N'\n\t\t} else if cb[i-2] == 'B' && cb[i-1] == 'B' && cb[i] == 'B' {\n\t\t\tb++\n\t\t\tcb[i-2] = 'N'\n\t\t}\n\t}\n\n\tif a == b {\n\t\treturn false\n\t}\n\n\treturn a > b\n}\n"
  },
  {
    "path": "Remove Duplicates from Sorted List/kata.go",
    "content": "package kata\n\n/**\n * Definition for singly-linked list.\n * type ListNode struct {\n *     Val int\n *     Next *ListNode\n * }\n */\nfunc deleteDuplicates(head *ListNode) *ListNode {\n\tif head == nil || head.Next == nil {\n\t\treturn head\n\t}\n\tcurrent := head.Next\n\tn := head\n\tfor current != nil {\n\t\tif current.Val == n.Val {\n\t\t\tif current.Next != nil {\n\t\t\t\tn.Next = current.Next\n\t\t\t\tcurrent = current.Next\n\t\t\t} else {\n\t\t\t\tn.Next = nil\n\t\t\t\tcurrent = nil\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tn = current\n\t\tcurrent = current.Next\n\t}\n\treturn head\n}\n"
  },
  {
    "path": "Remove Duplicates from Sorted List II/kata.go",
    "content": "package kata\n\n/**\n * Definition for singly-linked list.\n * type ListNode struct {\n *     Val int\n *     Next *ListNode\n * }\n */\nfunc deleteDuplicates(head *ListNode) *ListNode {\n\tif head == nil || head.Next == nil {\n\t\treturn head\n\t}\n\tcount := make(map[int]int)\n\tcurrent := head\n\tfor current != nil {\n\t\tcount[current.Val] = count[current.Val] + 1\n\t\tcurrent = current.Next\n\t}\n\ttmp := new(ListNode)\n\tcurrent = head\n\tpre := tmp\n\tpre.Next = head\n\tfor current != nil {\n\t\tv := count[current.Val]\n\t\tif v > 1 {\n\t\t\tpre.Next = current.Next\n\t\t\tcurrent = current.Next\n\t\t\tcontinue\n\t\t}\n\t\tpre = current\n\t\tcurrent = current.Next\n\t}\n\treturn tmp.Next\n}\n"
  },
  {
    "path": "Remove Element/kata.go",
    "content": "package kata\n\nimport (\n\t\"math\"\n\t\"sort\"\n)\n\nfunc removeElement(nums []int, val int) int {\n\n\tvar counter int\n\tfor i := 0; i < len(nums); i++ {\n\t\tif nums[i] == val {\n\t\t\tnums[i] = int(math.Inf(1))\n\t\t\tcounter++\n\t\t}\n\t}\n\n\tsort.Slice(nums, func(i, j int) bool {\n\t\treturn nums[i] > nums[j]\n\t})\n\n\tnums = nums[counter:]\n\n\treturn len(nums)\n}\n"
  },
  {
    "path": "Remove Linked List Elements/kata.go",
    "content": "package kata\n\n/**\n * Definition for singly-linked list.\n * type ListNode struct {\n *     Val int\n *     Next *ListNode\n * }\n */\nfunc removeElements(head *ListNode, val int) *ListNode {\n\tif head == nil {\n\t\treturn nil\n\t}\n\tif head.Next == nil && head.Val == val {\n\t\treturn nil\n\t}\n\tcurrent := head.Next\n\tpre := head\n\tfor current != nil {\n\t\tif current.Val == val {\n\t\t\tpre.Next = current.Next\n\t\t\tcurrent = current.Next\n\t\t} else {\n\t\t\tpre = current\n\t\t\tcurrent = current.Next\n\t\t}\n\t}\n\tif head != nil && head.Val == val {\n\t\treturn head.Next\n\t}\n\treturn head\n}\n"
  },
  {
    "path": "Remove Nth Node From End of List/kata.go",
    "content": "package kata\n\n/**\n * Definition for singly-linked list.\n * type ListNode struct {\n *     Val int\n *     Next *ListNode\n * }\n */\nfunc removeNthFromEnd(head *ListNode, n int) *ListNode {\n\tif head == nil {\n\t\treturn head\n\t}\n\tcurrent := head\n\tvar max int\n\tfor current != nil {\n\t\tmax = max + 1\n\t\tcurrent = current.Next\n\t}\n\tnth := max - n\n\tif nth == 0 {\n\t\treturn head.Next\n\t}\n\tcurrent = head.Next\n\tpre := head\n\tcounter := 1\n\tfor current != nil {\n\t\tif counter == nth {\n\t\t\tpre.Next = current.Next\n\t\t\tbreak\n\t\t}\n\t\tpre = current\n\t\tcurrent = current.Next\n\t\tcounter = counter + 1\n\t}\n\treturn head\n}\n"
  },
  {
    "path": "Remove Stones to Minimize the Total/kata.go",
    "content": "package Remove_Stones_to_Minimize_the_Total\n\nimport (\n\t\"container/heap\"\n\t\"math\"\n\t\"sort\"\n)\n\nfunc minStoneSum(piles []int, k int) int {\n\n\th := IntHeap(piles)\n\tsort.Sort(h)\n\n\tfor i := 0; i < k; i++ {\n\t\tn := heap.Pop(&h).(int)\n\t\tn = n - int(math.Floor(float64(n)/2))\n\t\theap.Push(&h, n)\n\t}\n\n\tvar sum int\n\tfor i := 0; i < h.Len(); i++ {\n\t\tsum += h[i]\n\t}\n\n\treturn sum\n}\n\ntype IntHeap []int\n\nfunc (h IntHeap) Len() int {\n\treturn len(h)\n}\n\nfunc (h IntHeap) Less(i, j int) bool {\n\treturn h[i] > h[j]\n}\n\nfunc (h IntHeap) Swap(i, j int) {\n\n\th[j], h[i] = h[i], h[j]\n}\n\nfunc (h *IntHeap) Push(x interface{}) {\n\t*h = append(*h, x.(int))\n}\n\nfunc (h *IntHeap) Pop() interface{} {\n\told := *h\n\tn := len(old)\n\tif n == 0 {\n\t\treturn -1\n\t}\n\tx := old[n-1]\n\t*h = old[0 : n-1]\n\treturn x\n}\n"
  },
  {
    "path": "Remove Trailing Zeros From a String/kata.go",
    "content": "package kata \n\nfunc removeTrailingZeros(num string) string {\n    i := len(num)-1\n    for ; i >= 0; i-- {\n        if num[i] != '0' {\n            break\n        }\n    }\n    return num[:i+1]\n}"
  },
  {
    "path": "Remove Vowels from a String/kata.go",
    "content": "package Remove_Vowels_from_a_String\n\nfunc removeVowels(s string) string {\n\tb := make([]rune, 0, len(s)/3)\n\tfor _, char := range s {\n\t\tif char == 'a' || char == 'e' || char == 'i' || char == 'o' || char == 'u' {\n\t\t\tcontinue\n\t\t}\n\t\tb = append(b, char)\n\t}\n\treturn string(b)\n}\n"
  },
  {
    "path": "Removing Minimum and Maximum From Array/kata.java",
    "content": "class Solution {\n    public int minimumDeletions(int[] nums) {\n        if (nums.length == 2) {\n            return 2;\n        }\n        if (nums.length == 1) {\n            return 1;\n        }\n\n        Integer min = null;\n        var indexMax = 0;\n        Integer max = null;\n        var indexMin = 0;\n        for (var i = 0; i < nums.length; i++) {\n            if (max == null || max < nums[i]) {\n                max = nums[i];\n                indexMax = i;\n            }\n            if (min == null || min > nums[i]) {\n                min = nums[i];\n                indexMin = i;\n            }\n        }\n\n        var a = Math.abs(0-(indexMax+1));\n        var b = Math.abs(nums.length-indexMin);\n        var c = Math.abs(0-(indexMin+1));\n        var d = Math.abs(nums.length-indexMax);\n\n        var p = 0;\n        if (a == c ) {\n            p = a;\n        } else if (c > a) {\n            p = c;\n        } else {\n            p = a;\n        }\n\n        var k = 0;\n        if (b == d ) {\n            k = d;\n        } else if (b > d) {\n            k = b;\n        } else {\n            k = d;\n        }\n\n        if (k <= p && k <= a+b && k <= c+d) {\n            return k;\n        }\n\n        if (p <= k && p <= a+b && p <= c+d) {\n            return p;\n        }\n        if (c+d <= k && c+d <= a+b && c+d <= p) {\n            return c+d;\n        }\n\n        if (a+b <= k && a+b <= c+d && a+b <= p) {\n            return a+b;\n        }\n\n        return a+b;\n    }\n}\n"
  },
  {
    "path": "Removing Stars From a String/kata.java",
    "content": "class Solution {\n    public String removeStars(String s) {\n        StringBuilder sb = new StringBuilder(s);\n        for (int i = 0; i < sb.length(); i++) {\n            if (sb.charAt(i) == '*') {\n                sb.deleteCharAt(i);\n                sb.deleteCharAt(i-1);\n                i = i - 2;\n            }\n        }\n        return sb.toString();\n    }\n}"
  },
  {
    "path": "Rename Columns/kata.py",
    "content": "import pandas as pd\n\ndef renameColumns(students: pd.DataFrame) -> pd.DataFrame:\n    students = students.rename(columns={\n        'id': 'student_id',\n        'first': 'first_name',\n        'last': 'last_name',\n        'age': 'age_in_years'\n    })\n    return students"
  },
  {
    "path": "Replace All 's to Avoid Consecutive Repeating Characters/kata.go",
    "content": "package kata\n\nimport (\n\t\"math/rand\"\n\t\"time\"\n)\n\nfunc modifyString(s string) string {\n\n\tb := []byte(s)\n\n\tfor i := 0; i < len(b); i++ {\n\t\tif b[i] == '?' {\n\t\t\tif i-1 >= 0 {\n\t\t\t\tb[i] = pickChar(b[i-1])\n\t\t\t\tif i+1 < len(b) && b[i+1] != '?' && b[i] == b[i+1] {\n\t\t\t\t\tfor {\n\t\t\t\t\t\trand.Seed(time.Now().UnixNano())\n\t\t\t\t\t\tn := rand.Intn(26)\n\t\t\t\t\t\tif n == 0 {\n\t\t\t\t\t\t\tn++\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb[i] = byte(n + 96)\n\t\t\t\t\t\tif b[i] != b[i-1] && b[i+1] != b[i] {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if i+1 < len(b) {\n\t\t\t\tif b[i] == '?' {\n\t\t\t\t\tchar := b[i+1]\n\t\t\t\t\tif b[i+1] == '?' {\n\t\t\t\t\t\tchar = 97\n\t\t\t\t\t}\n\n\t\t\t\t\tb[i] = pickChar(char)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tb[i] = 97\n\t\t\t}\n\t\t}\n\t}\n\n\treturn string(b)\n}\n\nfunc pickChar(char byte) byte {\n\tif char == 122 {\n\t\treturn char - 1\n\t}\n\tif char == 97 {\n\t\treturn char + 1\n\t}\n\treturn char - 1\n}\n"
  },
  {
    "path": "Replace All Digits with Characters/kata.go",
    "content": "package kata\n\nfunc replaceDigits(s string) string {\n\tb := []byte(s)\n\tfor i := 0; i < len(b); i = i + 2 {\n\t\tif i+1 == len(b) {\n\t\t\tbreak\n\t\t}\n\t\tb[i+1] = shift(b[i], b[i+1])\n\t}\n\treturn string(b)\n}\n\nfunc shift(c byte, by byte) byte {\n\treturn c + by - 48\n}\n"
  },
  {
    "path": "Replace Employee ID With The Unique Identifier/query.sql",
    "content": "SELECT eu.unique_id, e.name FROM Employees AS e LEFT JOIN EmployeeUNI AS eu ON eu.id = e.id;\n"
  },
  {
    "path": "Reshape Data: Concatenate/kata.py",
    "content": "import pandas as pd\n\ndef concatenateTables(df1: pd.DataFrame, df2: pd.DataFrame) -> pd.DataFrame:\n    frames = [df1, df2]\n    return pd.concat(frames)"
  },
  {
    "path": "Reshape Data: Melt/kata.py",
    "content": "import pandas as pd\n\ndef meltTable(report: pd.DataFrame) -> pd.DataFrame:\n    report = pd.melt(report, id_vars=['product'], value_vars=['quarter_1', 'quarter_2', 'quarter_3', 'quarter_4'], var_name='quarter', value_name='sales')\n    return report"
  },
  {
    "path": "Reshape Data: Pivot/kata.py",
    "content": "import pandas as pd\n\ndef pivotTable(weather: pd.DataFrame) -> pd.DataFrame:\n    weather = weather.pivot_table(index='month', columns='city', values='temperature', aggfunc='max')\n    return weather"
  },
  {
    "path": "Reshape the Matrix/kata.go",
    "content": "package kata\n\nfunc matrixReshape(nums [][]int, r int, c int) [][]int {\n\tif nums == nil {\n\t\treturn nums\n\t}\n\tif len(nums[0])*len(nums) != r*c {\n\t\treturn nums\n\t}\n\tres := make([][]int, 0)\n\tn := c\n\ti := 0\n\tres = append(res, make([]int, 0))\n\tfor _, row := range nums {\n\t\tfor _, col := range row {\n\t\t\tif n == 0 {\n\t\t\t\tn = c\n\t\t\t\ti = i + 1\n\t\t\t\tres = append(res, make([]int, 0))\n\t\t\t}\n\t\t\tn = n - 1\n\t\t\tres[i] = append(res[i], col)\n\t\t}\n\t}\n\treturn res\n}\n"
  },
  {
    "path": "Return Length of Arguments Passed/kata.js",
    "content": "/**\n * @param {...(null|boolean|number|string|Array|Object)} args\n * @return {number}\n */\nvar argumentsLength = function(...args) {\n    return args.length\n};\n"
  },
  {
    "path": "Reverse Integer/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nconst (\n\tNegative int = -1\n\tPositive int = 1\n)\n\nfunc reverse(x int) (sum int) {\n\n\tvar sign int\n\tif x < 0 {\n\t\tsign = Negative\n\t\tx = x * Negative\n\t} else if x > 0 {\n\t\tsign = Positive\n\t}\n\n\tstep := 1\n\tfor i := int(math.Log10(float64(x)+1)) - 1; i >= 0; i-- {\n\t\tstep = step * 10\n\t}\n\n\tfor x != 0 {\n\t\tn := x % 10\n\t\tx = x / 10\n\t\tsum += n * step\n\t\tstep = step / 10\n\t}\n\n\tif sum > math.MaxInt32 {\n\t\treturn 0\n\t}\n\n\tif sign == Negative {\n\t\tsum = sum * sign\n\t}\n\treturn sum\n}\n"
  },
  {
    "path": "Reverse Linked List/kata.go",
    "content": "package kata\n\n/**\n * Definition for singly-linked list.\n * type ListNode struct {\n *     Val int\n *     Next *ListNode\n * }\n */\nfunc reverseList(head *ListNode) *ListNode {\n\n\tif head == nil {\n\t\treturn nil\n\t}\n\n\tcurrent := head.Next\n\tnext := &ListNode{Val: head.Val}\n\tfor current != nil {\n\t\thead = &ListNode{Val: current.Val, Next: next}\n\t\tnext = head\n\t\tcurrent = current.Next\n\t}\n\n\treturn head\n}\n"
  },
  {
    "path": "Reverse Prefix of Word/kata.go",
    "content": "package kata\n\nfunc reversePrefix(word string, ch byte) string {\n\n\tj := -1\n\tfor i := 0; i < len(word); i++ {\n\t\tif word[i] == ch {\n\t\t\tj = i\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif j == -1 {\n\t\treturn word\n\t}\n\n\tb := []byte(word)\n\tk := 0\n\tfor i := j; i > (j / 2); i-- {\n\t\tb[i], b[k] = b[k], b[i]\n\t\tk++\n\t}\n\n\treturn string(b)\n}\n"
  },
  {
    "path": "Reverse String/kata.go",
    "content": "package kata\n\nfunc reverseString(s []byte) {\n\tif len(s) == 0 {\n\t\treturn\n\t}\n\tj := len(s) - 1\n\tfor i := 0; i < len(s)/2; i++ {\n\t\ts[i], s[j] = s[j], s[i]\n\t\tj--\n\t}\n}\n"
  },
  {
    "path": "Reverse Vowels of a String/kata.go",
    "content": "package kata\n\nfunc reverseVowels(s string) string {\n\tb := []byte(s)\n\tj := len(b) - 1\n\ti := 0\n\tfor j > i {\n\t\tif isVowel(b[i]) {\n\t\t\tif isVowel(b[j]) {\n\t\t\t\tb[i], b[j] = b[j], b[i]\n\t\t\t\ti++\n\t\t\t}\n\t\t\tj--\n\t\t\tcontinue\n\t\t}\n\t\ti++\n\t}\n\treturn string(b)\n}\n\nfunc isVowel(char byte) bool {\n\tswitch char {\n\tcase 'a', 'i', 'e', 'o', 'u', 'A', 'I', 'E', 'O', 'U':\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "Reverse Words in a String/kata.go",
    "content": "package kata\n\nfunc reverseWords(s string) string {\n\tvar word string\n\tvar ss string\n\tfor i := len(s) - 1; i >= 0; i-- {\n\t\tif s[i] == ' ' && word == \"\" {\n\t\t\tcontinue\n\t\t} else if s[i] == ' ' {\n\t\t\tss = ss + \" \" + word\n\t\t\tif (i-1) > 0 && s[i-1] != ' ' {\n\t\t\t\tword = string(s[i-1])\n\t\t\t\ti--\n\t\t\t} else {\n\t\t\t\tword = \"\"\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tword = string(s[i]) + word\n\t}\n\tif word != \"\" {\n\t\tss = ss + \" \" + word\n\t}\n\tif ss == \"\" {\n\t\treturn ss\n\t}\n\treturn ss[1:]\n}\n"
  },
  {
    "path": "Reverse Words in a String III/kata.go",
    "content": "package kata\n\nfunc reverseWords(s string) string {\n\n\tb := []byte(s)\n\tvar k int\n\tfor i := 0; i < len(b); i++ {\n\n\t\tif b[i] == 32 || len(b) == (i+1) {\n\n\t\t\tif len(b) == (i + 1) {\n\t\t\t\ti = i + 1\n\t\t\t}\n\n\t\t\tj := i - 1\n\t\t\tn := (i - k) % 2\n\t\t\tvar m int\n\t\t\tif n == 0 {\n\t\t\t\tm = (i - 1 - k) / 2\n\t\t\t} else {\n\t\t\t\tm = (i - 0 - k) / 2\n\t\t\t}\n\n\t\t\tfor l := 0; l <= m; l++ {\n\t\t\t\tb[k], b[j] = b[j], b[k]\n\t\t\t\tj--\n\t\t\t\tk++\n\t\t\t}\n\t\t\tk = i + 1\n\t\t}\n\t}\n\n\treturn string(b)\n\n}\n"
  },
  {
    "path": "Richest Customer Wealth/kata.go",
    "content": "package kata\n\nfunc maximumWealth(accounts [][]int) int {\n\tvar max int\n\tfor _, account := range accounts {\n\t\tn := sum(account)\n\t\tif max < n {\n\t\t\tmax = n\n\t\t}\n\t}\n\treturn max\n}\n\nfunc sum(values []int) int {\n\tvar sum int\n\tfor i := 0; i < len(values)/2; i++ {\n\t\tsum += values[i] + values[len(values)-i-1]\n\t}\n\tif len(values)%2 == 1 {\n\t\tsum += values[len(values)/2]\n\t}\n\n\treturn sum\n}\n"
  },
  {
    "path": "Rings and Rods/kata.go",
    "content": "package Rings_and_Rods\n\nimport \"sort\"\n\nfunc countPoints(rings string) int {\n\n\tpairs := make([]Pair, len(rings)/2)\n\tvar j int\n\tfor i := 0; i < len(rings); i = i + 2 {\n\t\tpairs[j] = Pair{\n\t\t\tKey:   rings[i+1],\n\t\t\tValue: rings[i],\n\t\t}\n\t\tj++\n\t}\n\n\tsort.Slice(pairs, func(i, j int) bool {\n\t\tif pairs[i].Key == pairs[j].Key {\n\t\t\treturn pairs[i].Value < pairs[j].Value\n\t\t}\n\t\treturn pairs[i].Key < pairs[j].Key\n\t})\n\n\tcurrentRode := pairs[0].Key\n\tcurrentColor := pairs[0].Value\n\tcounter := 1\n\tall := 0\n\tfor i := 1; i < len(pairs); i++ {\n\t\tif currentRode != pairs[i].Key || (len(pairs)-1 == i) {\n\n\t\t\tif len(pairs)-1 == i && currentColor != pairs[i].Value && pairs[i].Key == currentRode {\n\t\t\t\tcounter++\n\t\t\t}\n\n\t\t\tif counter == 3 {\n\t\t\t\tall++\n\t\t\t}\n\n\t\t\tcurrentRode = pairs[i].Key\n\t\t\tcurrentColor = pairs[i].Value\n\t\t\tcounter = 1\n\t\t\tcontinue\n\t\t}\n\n\t\tif currentColor != pairs[i].Value {\n\t\t\tcounter++\n\t\t\tcurrentColor = pairs[i].Value\n\t\t}\n\n\t}\n\n\treturn all\n}\n\ntype Pair struct {\n\tKey   byte\n\tValue byte\n}\n"
  },
  {
    "path": "Roman to Integer/kata.go",
    "content": "package kata\n\nvar mapping = map[string]int{\"I\": 1, \"V\": 5, \"X\": 10, \"L\": 50, \"C\": 100, \"D\": 500, \"M\": 1000, \"IV\": 4, \"IX\": 9, \"XL\": 40, \"XC\": 90, \"CD\": 400, \"CM\": 900}\n\nfunc romanToInt(s string) int {\n\tvar sum int\n\tfor i := 0; i < len(s); {\n\n\t\tif i+2 <= len(s) {\n\t\t\tv, ok := mapping[string(s[i:i+2])]\n\t\t\tif ok {\n\t\t\t\tsum += v\n\t\t\t\ti = i + 2\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tsum += mapping[string(s[i])]\n\t\ti++\n\n\t}\n\treturn sum\n}\n"
  },
  {
    "path": "Root Equals Sum of Children/kata.go",
    "content": "package Root_Equals_Sum_of_Children\n\ntype TreeNode struct {\n\tVal   int\n\tLeft  *TreeNode\n\tRight *TreeNode\n}\n\nfunc checkTree(root *TreeNode) bool {\n\treturn root.Val == (root.Left.Val + root.Right.Val)\n}\n"
  },
  {
    "path": "Rotate Array/kata.go",
    "content": "package kata\n\nfunc rotate(nums []int, k int) {\n\tfor ; k > 0; k-- {\n\t\ttmp := nums[len(nums)-1]\n\t\tfor j := len(nums) - 2; j >= 0; j-- {\n\t\t\tnums[j+1] = nums[j]\n\t\t}\n\t\tnums[0] = tmp\n\t}\n}\n"
  },
  {
    "path": "Rotate String/kata.go",
    "content": "package kata\n\nfunc rotateString(A string, B string) bool {\n\tif A == \"\" && B == \"\" {\n\t\treturn true\n\t}\n\tif A == \"\" {\n\t\treturn false\n\t}\n\n\toldA := A\n\tfirst := true\n\tfor {\n\t\tif first != true && oldA == A {\n\t\t\treturn false\n\t\t}\n\t\tfirst = false\n\n\t\ta := A[0]\n\t\tA = A[1:len(A)] + string(a)\n\n\t\tif A == B {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "Row With Maximum Ones/kata.go",
    "content": "package kata\n\nfunc rowAndMaximumOnes(mat [][]int) []int {\n\tvar globalMaxOnesPerRow int\n\tvar rowIndex = 0\n\tfor i, row := range mat {\n\t\tvar localCountOnesPerRow int\n\t\tfor _, col := range row {\n\t\t\tif col == 1 {\n\t\t\t\tlocalCountOnesPerRow++\n\t\t\t}\n\t\t}\n\n\t\tif localCountOnesPerRow > globalMaxOnesPerRow {\n\t\t\tglobalMaxOnesPerRow = localCountOnesPerRow\n\t\t\trowIndex = i\n\t\t}\n\t}\n\treturn []int{rowIndex, globalMaxOnesPerRow}\n}\n"
  },
  {
    "path": "Running Sum of 1d Array/kata.go",
    "content": "package kata\n\nfunc runningSum(nums []int) []int {\n\tsumNums := make([]int, len(nums))\n\tsubTotal := 0\n\tfor i := 0; i < len(nums); i++ {\n\t\tsubTotal += nums[i]\n\t\tsumNums[i] = subTotal\n\t}\n\n\treturn sumNums\n}\n"
  },
  {
    "path": "Running Total for Different Genders/q.sql",
    "content": "SELECT gender,\n    DAY,\n    SUM(score_points) OVER (PARTITION BY gender\n    ORDER BY gender,\n    DAY) AS total\nFROM Scores\nGROUP BY gender,\n    DAY\nORDER BY gender ASC,\n    DAY ASC"
  },
  {
    "path": "Sales Analysis I/q.sql",
    "content": "SELECT s1.seller_id FROM Sales AS s1  GROUP BY s1.seller_id HAVING SUM(price) = (SELECT SUM(price) AS total FROM Sales AS s GROUP BY s.seller_id ORDER BY total DESC LIMIT 1);"
  },
  {
    "path": "Sales Person/q.sql",
    "content": "SELECT\n    name\nFROM\n    SalesPerson\nWHERE\n        name NOT IN (\n        SELECT\n            sp.name\n        FROM\n            SalesPerson AS sp\n                INNER JOIN Orders AS o ON o.sales_id = sp.sales_id\n                INNER JOIN Company AS c ON c.com_id = o.com_id\n        WHERE\n                c.name = \"RED\"\n    );\n"
  },
  {
    "path": "Sales by Day of the Week/q.sql",
    "content": "WITH sales_matrix AS\n         (SELECT item_category AS CATEGORY,\n                 SUM(quantity) AS MONDAY,\n                 0 AS TUESDAY,\n                 0 AS WEDNESDAY,\n                 0 AS THURSDAY,\n                 0 AS FRIDAY,\n                 0 AS SATURDAY,\n                 0 AS SUNDAY\n          FROM Items\n                   JOIN Orders USING (item_id)\n          WHERE WEEKDAY(order_date) = 0\n          GROUP BY item_category\n          UNION SELECT item_category AS CATEGORY,\n                       0 AS MONDAY,\n                       SUM(quantity) AS TUESDAY,\n                       0 AS WEDNESDAY,\n                       0 AS THURSDAY,\n                       0 AS FRIDAY,\n                       0 AS SATURDAY,\n                       0 AS SUNDAY\n          FROM Items\n                   JOIN Orders USING (item_id)\n          WHERE WEEKDAY(order_date) = 1\n          GROUP BY item_category\n          UNION ALL SELECT item_category AS CATEGORY,\n                           0 AS MONDAY,\n                           0 AS TUESDAY,\n                           SUM(quantity) AS WEDNESDAY,\n                           0 AS THURSDAY,\n                           0 AS FRIDAY,\n                           0 AS SATURDAY,\n                           0 AS SUNDAY\n          FROM Items\n                   JOIN Orders USING (item_id)\n          WHERE WEEKDAY(order_date) = 2\n          GROUP BY item_category\n          UNION ALL SELECT item_category AS CATEGORY,\n                           0 AS MONDAY,\n                           0 AS TUESDAY,\n                           0 AS WEDNESDAY,\n                           SUM(quantity) AS THURSDAY,\n                           0 AS FRIDAY,\n                           0 AS SATURDAY,\n                           0 AS SUNDAY\n          FROM Items\n                   JOIN Orders USING (item_id)\n          WHERE WEEKDAY(order_date) = 3\n          GROUP BY item_category\n          UNION ALL SELECT item_category AS CATEGORY,\n                           0 AS MONDAY,\n                           0 AS TUESDAY,\n                           0 AS WEDNESDAY,\n                           0 AS THURSDAY,\n                           SUM(quantity) AS FRIDAY,\n                           0 AS SATURDAY,\n                           0 AS SUNDAY\n          FROM Items\n                   JOIN Orders USING (item_id)\n          WHERE WEEKDAY(order_date) = 4\n          GROUP BY item_category\n          UNION ALL SELECT item_category AS CATEGORY,\n                           0 AS MONDAY,\n                           0 AS TUESDAY,\n                           0 AS WEDNESDAY,\n                           0 AS THURSDAY,\n                           0 AS FRIDAY,\n                           SUM(quantity) AS SATURDAY,\n                           0 AS SUNDAY\n          FROM Items\n                   JOIN Orders USING (item_id)\n          WHERE WEEKDAY(order_date) = 5\n          GROUP BY item_category\n          UNION ALL SELECT item_category AS CATEGORY,\n                           0 AS MONDAY,\n                           0 AS TUESDAY,\n                           0 AS WEDNESDAY,\n                           0 AS THURSDAY,\n                           0 AS FRIDAY,\n                           0 AS SATURDAY,\n                           SUM(quantity) AS SUNDAY\n          FROM Items\n                   JOIN Orders USING (item_id)\n          WHERE WEEKDAY(order_date) = 6\n          GROUP BY item_category\n          UNION ALL SELECT item_category AS CATEGORY,\n                           0 AS MONDAY,\n                           0 AS TUESDAY,\n                           0 AS WEDNESDAY,\n                           0 AS THURSDAY,\n                           0 AS FRIDAY,\n                           0 AS SATURDAY,\n                           0 AS SUNDAY\n          FROM Items AS i\n                   LEFT JOIN Orders AS o ON i.item_id = o.item_id\n          WHERE o.item_id IS NULL\n          GROUP BY item_category)\n\nSELECT CATEGORY,\n       SUM(MONDAY) AS MONDAY,\n       SUM(TUESDAY) AS TUESDAY,\n       SUM(WEDNESDAY) AS WEDNESDAY,\n       SUM(THURSDAY) AS THURSDAY,\n       SUM(FRIDAY) AS FRIDAY,\n       SUM(SATURDAY) AS SATURDAY,\n       SUM(SUNDAY) AS SUNDAY\nFROM sales_matrix\nGROUP BY CATEGORY\nORDER BY CATEGORY;"
  },
  {
    "path": "Same Tree/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc isSameTree(p *TreeNode, q *TreeNode) bool {\n\n\tif p == nil && q == nil {\n\t\treturn true\n\t}\n\n\tif p != nil || q != nil {\n\t\tif (p == nil && q != nil) || (p != nil && q == nil) {\n\t\t\treturn false\n\t\t}\n\t\tif p.Val != q.Val {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tvar leftValid bool\n\tif p.Left != nil || q.Left != nil {\n\t\tif (p.Left == nil && q.Left != nil) || (p.Left != nil && q.Left == nil) {\n\t\t\treturn false\n\t\t}\n\t\tleftValid = isSameTree(p.Left, q.Left)\n\t\tif !leftValid {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tvar rightValid bool\n\tif p.Right != nil || q.Right != nil {\n\t\tif (p.Right == nil && q.Right != nil) || (p.Right != nil && q.Right == nil) {\n\t\t\treturn false\n\t\t}\n\t\trightValid = isSameTree(p.Right, q.Right)\n\n\t\tif !rightValid {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "Score of a String/kata.go",
    "content": "package kata\n\nfunc scoreOfString(s string) int {\n\tvar sum int\n\tfor i := 1; i < len(s); i++ {\n\t\tsum += abs(int(s[i]) - int(s[i-1]))\n\t}\n\treturn sum\n}\n\nfunc abs(a int) int {\n\tif a < 0 {\n\t\treturn -a\n\t}\n\treturn a\n}\n"
  },
  {
    "path": "Search Insert Position/kata.go",
    "content": "package kata\n\nfunc searchInsert(nums []int, target int) int {\n\tif target > nums[len(nums)-1] {\n\t\treturn len(nums)\n\t}\n\tif target < nums[0] {\n\t\treturn 0\n\t}\n\tfor i := 0; i < len(nums); i++ {\n\t\tif target < nums[i] {\n\t\t\treturn i\n\t\t}\n\t\tif nums[i] == target {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n"
  },
  {
    "path": "Search a 2D Matrix/kata.go",
    "content": "package kata\n\nfunc searchMatrix(matrix [][]int, target int) bool {\n\tif len(matrix) == 1 {\n\t\treturn searchVector(matrix[0], target)\n\t}\n\tfor i := 0; i < len(matrix); i++ {\n\t\tif len(matrix[i]) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tif target == matrix[i][0] {\n\t\t\treturn true\n\t\t}\n\t\tif matrix[i][0] < target && len(matrix)-1 != i {\n\t\t\tcontinue\n\t\t}\n\t\trow := i\n\t\tif matrix[i][0] > target && i != 0 {\n\t\t\trow = i - 1\n\t\t}\n\t\treturn searchVector(matrix[row], target)\n\t}\n\treturn false\n}\n\nfunc searchVector(v []int, target int) bool {\n\n\tif len(v) == 0 {\n\t\treturn false\n\t}\n\n\tif len(v) == 1 {\n\t\treturn v[0] == target\n\t}\n\tmid := len(v) / 2\n\tif v[mid] == target {\n\t\treturn true\n\t}\n\n\tif v[mid] > target {\n\t\treturn searchVector(v[:mid], target)\n\t}\n\n\tif v[mid] < target {\n\t\treturn searchVector(v[mid:], target)\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "Search a 2D Matrix II/kata.go",
    "content": "package kata\n\nfunc searchMatrix(matrix [][]int, target int) bool {\nouterLoop:\n\tfor _, vector := range matrix {\n\t\tif len(vector) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tif vector[len(vector)/2] == target {\n\t\t\treturn true\n\t\t}\n\t\tif vector[len(vector)/2] > target {\n\t\t\tfor i := 0; i < len(vector)/2; i++ {\n\t\t\t\tif vector[i] > target {\n\t\t\t\t\tcontinue outerLoop\n\t\t\t\t}\n\t\t\t\tif vector[i] == target {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t} else if vector[len(vector)/2] < target {\n\t\t\tfor i := len(vector) - 1; i > len(vector)/2; i-- {\n\t\t\t\tif vector[i] < target {\n\t\t\t\t\tcontinue outerLoop\n\t\t\t\t}\n\t\t\t\tif vector[i] == target {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "Search in Rotated Sorted Array II/kata.go",
    "content": "package kata\n\nfunc search(nums []int, target int) bool {\n\tif len(nums) == 1 && nums[0] == target {\n\t\treturn true\n\t} else if len(nums) == 1 && nums[0] != target {\n\t\treturn false\n\t}\n\tif len(nums) == 0 {\n\t\treturn false\n\t}\n\tmid := len(nums) / 2\n\tif nums[mid] == target {\n\t\treturn true\n\t}\n\tok := search(nums[:mid], target)\n\tif ok {\n\t\treturn true\n\t}\n\tok = search(nums[mid:], target)\n\tif ok {\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "Search in a Binary Search Tree/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc searchBST(root *TreeNode, val int) *TreeNode {\n\tif root == nil {\n\t\treturn nil\n\t}\n\tif root.Val == val {\n\t\treturn root\n\t}\n\tif root.Left != nil {\n\t\tnode := searchBST(root.Left, val)\n\t\tif node != nil {\n\t\t\treturn node\n\t\t}\n\t}\n\tif root.Right != nil {\n\t\tnode := searchBST(root.Right, val)\n\t\tif node != nil {\n\t\t\treturn node\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "Seat Reservation Manager/kata.go",
    "content": "package Seat_Reservation_Manager\n\ntype SeatManager struct {\n\tseats   []int\n\tcurrent int\n}\n\nfunc Constructor(n int) SeatManager {\n\treturn SeatManager{seats: make([]int, n)}\n}\n\nfunc (this *SeatManager) Reserve() int {\n\tif this.seats[this.current] == 1 {\n\t\tfor this.seats[this.current] != 0 {\n\t\t\tthis.current++\n\t\t}\n\t}\n\n\tthis.seats[this.current] = 1\n\tseat := this.current + 1\n\tthis.current++\n\treturn seat\n}\n\nfunc (this *SeatManager) Unreserve(seatNumber int) {\n\tthis.seats[seatNumber-1] = 0\n\tif this.current > (seatNumber - 1) {\n\t\tthis.current = seatNumber - 1\n\t}\n}\n"
  },
  {
    "path": "Second Highest Salary/kata.sql",
    "content": "package kata\n\nSELECT MAX(Salary) AS 'SecondHighestSalary'\nFROM Employee\nWHERE Salary < (SELECT MAX(Salary) FROM Employee)\n"
  },
  {
    "path": "Second Largest Digit in a String/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc secondHighest(s string) int {\n\n\tb := []byte(s)\n\n\tsort.Slice(b, func(i, j int) bool {\n\t\tbi := int(b[i])\n\t\tbj := int(b[j])\n\n\t\tif !(bi >= 48 && bi <= 57) {\n\t\t\tbi = -9999\n\t\t}\n\n\t\tif !(bj >= 48 && bj <= 57) {\n\t\t\tbj = -9999\n\t\t}\n\n\t\treturn bi < bj\n\t})\n\n\tmax := b[len(b)-1]\n\tfor i := len(b) - 2; i >= 0; i-- {\n\t\tif max != b[i] {\n\t\t\tif b[i] >= 48 && b[i] <= 57 {\n\t\t\t\treturn int(b[i] - 48)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn -1\n}\n"
  },
  {
    "path": "Second Minimum Node In a Binary Tree/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\n\nfunc findSecondMinimumValue(root *TreeNode) int {\n\tif root == nil {\n\t\treturn -1\n\t}\n\tlist := make(map[int]struct{})\n\tinorder(root, list)\n\tif len(list) == 1 {\n\t\treturn -1\n\t}\n\ta := make([]int, 0)\n\tfor n := range list {\n\t\ta = append(a, n)\n\t}\n\tsort.Slice(a, func(i, j int) bool {\n\t\treturn a[i] < a[j]\n\t})\n\treturn a[1]\n}\n\nfunc inorder(node *TreeNode, list map[int]struct{}) {\n\tif node == nil {\n\t\treturn\n\t}\n\n\tif node.Left != nil {\n\t\tinorder(node.Left, list)\n\t}\n\n\tlist[node.Val] = struct{}{}\n\n\tif node.Right != nil {\n\t\tinorder(node.Right, list)\n\t}\n}\n"
  },
  {
    "path": "Select Data/kata.py",
    "content": "import pandas as pd\n\ndef selectData(students: pd.DataFrame) -> pd.DataFrame:\n    students = students.query(\"student_id == 101\")\n    return students[['name', 'age']]"
  },
  {
    "path": "Self Dividing Numbers/kata.go",
    "content": "package kata\n\nfunc selfDividingNumbers(left int, right int) []int {\n\tnums := make([]int, 0)\nouterLoop:\n\tfor i := left; i <= right; i++ {\n\t\tif i < 10 {\n\t\t\tnums = append(nums, i)\n\t\t} else {\n\t\t\tnum := i\n\t\t\tfor num > 0 {\n\t\t\t\tk := num % 10\n\t\t\t\tif k == 0 || i%k != 0 {\n\t\t\t\t\tcontinue outerLoop\n\t\t\t\t}\n\t\t\t\tnum = num / 10\n\t\t\t}\n\t\t\tnums = append(nums, i)\n\t\t}\n\t}\n\treturn nums\n}\n"
  },
  {
    "path": "Sellers With No Sales/q.sql",
    "content": "\nSELECT seller_name FROM Seller AS s WHERE seller_id NOT IN (SELECT seller_id FROM Orders AS o WHERE YEAR(o.sale_date) = 2020) ORDER BY s.seller_name"
  },
  {
    "path": "Separate the Digits in an Array/kata.java",
    "content": "class Solution {\n    public int[] separateDigits(int[] nums) {\n        ArrayList<Integer> newNums = new ArrayList<Integer>();\n        for (var num : nums) {\n            var digitCount = ((int) Math.log10((double) num));\n            for (; digitCount >= 0; digitCount--) {\n              var digit = (num/(int) Math.pow(10, (double) digitCount)) % 10;\n              newNums.add(digit);\n            }\n        }\n        var res = new int[newNums.size()];\n        for (var i = 0; i < newNums.size(); i++) {\n            res[i] = newNums.get(i);\n        }\n        return res;\n    }\n}"
  },
  {
    "path": "Set Mismatch/kata.go",
    "content": "package kata\n\nfunc findErrorNums(nums []int) []int {\n\tcounter := make([]int, len(nums))\n\tfor i := 0; i < len(nums); i++ {\n\t\tcounter[nums[i]-1] = counter[nums[i]-1] + 1\n\t}\n\tres := make([]int, 2)\n\tfor i := 0; i < len(nums); i++ {\n\t\tif counter[i] == 0 {\n\t\t\tres[1] = i + 1\n\t\t} else if counter[i] > 1 {\n\t\t\tres[0] = i + 1\n\t\t}\n\t}\n\treturn res\n}\n"
  },
  {
    "path": "Shift 2D Grid/kata.go",
    "content": "package Shift_2D_Grid\n\nfunc shiftGrid(grid [][]int, k int) [][]int {\n\n\tswap := -1001\n\tfor ; k >= 1; k-- {\n\t\tfor i := 0; i < len(grid); i++ {\n\t\t\tfor j := 0; j < len(grid[i]); j++ {\n\t\t\t\tc := swap\n\t\t\t\tif c != -1001 {\n\t\t\t\t\tif i == (len(grid)-1) && j == (len(grid[i])-1) {\n\t\t\t\t\t\tgrid[0][0] = swap\n\t\t\t\t\t\tswap = -1001\n\t\t\t\t\t} else if i+1 < len(grid) && j == (len(grid[i])-1) {\n\t\t\t\t\t\toldSwap := swap\n\t\t\t\t\t\tswap = grid[i+1][0]\n\t\t\t\t\t\tgrid[i+1][0] = oldSwap\n\t\t\t\t\t} else if j < len(grid[i]) {\n\t\t\t\t\t\toldSwap := swap\n\t\t\t\t\t\tswap = grid[i][j+1]\n\t\t\t\t\t\tgrid[i][j+1] = oldSwap\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif i == (len(grid)-1) && j == (len(grid[i])-1) {\n\t\t\t\t\t\treturn grid\n\t\t\t\t\t} else if i+1 < len(grid) && j == (len(grid[i])-1) {\n\t\t\t\t\t\tswap = grid[i+1][0]\n\t\t\t\t\t\tgrid[i+1][0] = grid[i][j]\n\t\t\t\t\t} else if j < len(grid[i]) {\n\t\t\t\t\t\tswap = grid[i][j+1]\n\t\t\t\t\t\tgrid[i][j+1] = grid[i][j]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn grid\n}\n"
  },
  {
    "path": "Shortest Distance in a Line/q.sql",
    "content": "SELECT\n    ABS(b.x-c.x) AS shortest\nFROM (SELECT\n          a.x,\n          ROW_NUMBER() OVER (\n        ORDER BY\n          a.x\n      ) AS 'row_number'\n      FROM\n          Point AS a\n     ) AS b\n         INNER JOIN (\n    SELECT\n        a.x,\n        ROW_NUMBER() OVER (\n        ORDER BY\n          a.x\n      ) AS 'row_number'\n    FROM\n        Point AS a\n)  AS c ON (c.row_number > b.row_number) ORDER BY  ABS(b.x-c.x) LIMIT 1\n\n\n\n"
  },
  {
    "path": "Shortest Distance to a Character/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc shortestToChar(S string, C byte) []int {\n\tCs := make([]int, 0)\n\tfor i := 0; i < len(S); i++ {\n\t\tif S[i] == C {\n\t\t\tCs = append(Cs, i)\n\t\t}\n\t}\n\n\tallDis := make([]int, 0)\n\tfor i := 0; i < len(S); i++ {\n\t\tmin := -1\n\t\tfor j := 0; j < len(Cs); j++ {\n\t\t\tdis := math.Abs(float64(i - Cs[j]))\n\t\t\tif min == -1 || int(dis) < min {\n\t\t\t\tmin = int(dis)\n\t\t\t}\n\t\t\tif min == 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tallDis = append(allDis, min)\n\t}\n\n\treturn allDis\n}\n"
  },
  {
    "path": "Shortest Word Distance/kata.go",
    "content": "package Shortest_Word_Distance\n\nimport \"math\"\n\nfunc shortestDistance(wordsDict []string, word1 string, word2 string) int {\n\tk, j := -1, -1\n\tglobalDiff := -1\n\tfor i, word := range wordsDict {\n\t\tif word == word1 {\n\t\t\tk = i\n\t\t\tif k > -1 && j > -1 {\n\t\t\t\tlocalDiff := int(math.Abs(float64(k) - float64(j)))\n\t\t\t\tif globalDiff == -1 || localDiff < globalDiff {\n\t\t\t\t\tglobalDiff = localDiff\n\t\t\t\t}\n\t\t\t}\n\t\t} else if word == word2 {\n\t\t\tj = i\n\t\t\tif k > -1 && j > -1 {\n\t\t\t\tlocalDiff := int(math.Abs(float64(k) - float64(j)))\n\t\t\t\tif globalDiff == -1 || localDiff < globalDiff {\n\t\t\t\t\tglobalDiff = localDiff\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn globalDiff\n}\n"
  },
  {
    "path": "Shortest Word Distance II/kata.go",
    "content": "package Shortest_Word_Distance_II\n\nimport \"math\"\n\ntype WordDistance struct {\n\twordsDict []string\n}\n\nfunc Constructor(wordsDict []string) WordDistance {\n\treturn WordDistance{\n\t\twordsDict: wordsDict,\n\t}\n}\n\nfunc (this *WordDistance) Shortest(word1 string, word2 string) int {\n\treturn shortestDistance(this.wordsDict, word1, word2)\n}\n\nfunc shortestDistance(wordsDict []string, word1 string, word2 string) int {\n\tk, j := -1, -1\n\tglobalDiff := -1\n\tfor i, word := range wordsDict {\n\t\tif word == word1 {\n\t\t\tk = i\n\t\t\tif k > -1 && j > -1 {\n\t\t\t\tlocalDiff := int(math.Abs(float64(k) - float64(j)))\n\t\t\t\tif globalDiff == -1 || localDiff < globalDiff {\n\t\t\t\t\tglobalDiff = localDiff\n\t\t\t\t}\n\t\t\t}\n\t\t} else if word == word2 {\n\t\t\tj = i\n\t\t\tif k > -1 && j > -1 {\n\t\t\t\tlocalDiff := int(math.Abs(float64(k) - float64(j)))\n\t\t\t\tif globalDiff == -1 || localDiff < globalDiff {\n\t\t\t\t\tglobalDiff = localDiff\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn globalDiff\n}\n\n/**\n * Your WordDistance object will be instantiated and called as such:\n * obj := Constructor(wordsDict);\n * param_1 := obj.Shortest(word1,word2);\n */\n"
  },
  {
    "path": "Shuffle String/kata.go",
    "content": "package kata\n\nfunc restoreString(s string, indices []int) string {\n\tnewS := make([]byte, len(s))\n\tfor i, j := range indices {\n\t\tnewS[j] = s[i]\n\t}\n\treturn string(newS)\n}\n"
  },
  {
    "path": "Shuffle the Array/kata.go",
    "content": "package kata\n\nfunc shuffle(nums []int, n int) []int {\n\tshuffled := make([]int, len(nums))\n\ttoggle := true\n\tj := 0\n\tfor i := 0; i < len(nums); i++ {\n\t\tif toggle {\n\t\t\tshuffled[i] = nums[j]\n\t\t} else {\n\t\t\tshuffled[i] = nums[j+n]\n\t\t\tj++\n\t\t}\n\t\ttoggle = !toggle\n\t}\n\treturn shuffled\n}\n"
  },
  {
    "path": "Sign of the Product of an Array/kata.go",
    "content": "package kata\n\nfunc arraySign(nums []int) int {\n\tvar negativ int\n\n\tfor i := 0; i < len(nums); i++ {\n\t\tif nums[i] == 0 {\n\t\t\treturn 0\n\t\t}\n\t\tif nums[i] < 0 {\n\t\t\tnegativ++\n\t\t}\n\t}\n\n\tif negativ%2 == 0 {\n\t\treturn 1\n\t} else if negativ%2 == 1 {\n\t\treturn -1\n\t}\n\n\treturn 1\n}\n"
  },
  {
    "path": "Simple Bank System/kata.go",
    "content": "package kata\n\ntype Bank struct {\n\tbalance []int64\n}\n\nfunc Constructor(balance []int64) Bank {\n\treturn Bank{\n\t\tbalance: balance,\n\t}\n}\n\nfunc (this *Bank) Transfer(account1 int, account2 int, money int64) bool {\n\tif account1 < 0 || account1 > len(this.balance) {\n\t\treturn false\n\t}\n\tif account2 < 0 || account2 > len(this.balance) {\n\t\treturn false\n\t}\n\n\taccount1 = account1 - 1\n\taccount2 = account2 - 1\n\n\taccount1Balance := this.balance[account1]\n\tif account1Balance < money {\n\t\treturn false\n\t}\n\n\taccount1Balance = account1Balance - money\n\tthis.balance[account1] = account1Balance\n\tthis.balance[account2] = this.balance[account2] + money\n\n\treturn true\n}\n\nfunc (this *Bank) Deposit(account int, money int64) bool {\n\tif account < 0 || account > len(this.balance) {\n\t\treturn false\n\t}\n\n\taccount = account - 1\n\n\tthis.balance[account] = this.balance[account] + money\n\treturn true\n}\n\nfunc (this *Bank) Withdraw(account int, balance int64) bool {\n\tif account < 0 || account > len(this.balance) {\n\t\treturn false\n\t}\n\n\taccount = account - 1\n\n\tmoney := this.balance[account]\n\n\tmoney = money - balance\n\tif money >= 0 {\n\t\tthis.balance[account] = money\n\t\treturn true\n\t}\n\treturn false\n}\n\n/**\n * Your Bank object will be instantiated and called as such:\n * obj := Constructor(balance);\n * param_1 := obj.Transfer(account1,account2,money);\n * param_2 := obj.Deposit(account,money);\n * param_3 := obj.Withdraw(account,money);\n */\n"
  },
  {
    "path": "Single Element in a Sorted Array/kata.go",
    "content": "package kata\n\nfunc singleNonDuplicate(nums []int) (a int) {\n\tfor _, n := range nums {\n\t\ta = a ^ n\n\t}\n\treturn\n}\n"
  },
  {
    "path": "Single Number/kata.go",
    "content": "package kata\n\nfunc singleNumber(nums []int) int {\n\tif len(nums) == 0 {\n\t\treturn 0\n\t}\n\tx := nums[0]\n\tfor _, n := range nums[1:] {\n\t\tx = n ^ x\n\t}\n\treturn x\n}\n"
  },
  {
    "path": "Single-Row Keyboard/kata.go",
    "content": "package Single_Row_Keyboard\n\nimport \"math\"\n\nfunc calculateTime(keyboard string, word string) int {\n\tkeyMap := make(map[rune]int)\n\tfor i, key := range keyboard {\n\t\tkeyMap[key] = i\n\t}\n\tvar startPoint int\n\tvar sum int\n\tfor _, char := range word {\n\t\tsum += int(math.Abs(float64(keyMap[char] - startPoint)))\n\t\tstartPoint = keyMap[char]\n\t}\n\treturn sum\n}\n"
  },
  {
    "path": "Sliding Window Maximum/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc maxSlidingWindow(nums []int, k int) []int {\n\n\tif len(nums) == 1 {\n\t\treturn nums\n\t}\n\n\tl := 0\n\tmax := findMax(nums, 0, k-1)\n\tnums[l] = max.n\n\n\tfor i := k; i < len(nums); i++ {\n\t\tl++\n\t\tj := i - k + 1\n\t\tif max.i < j {\n\t\t\tmax = findMax(nums, j, i)\n\t\t}\n\n\t\tif max.n > nums[i] {\n\t\t\tnums[l] = max.n\n\t\t} else {\n\t\t\tnums[l] = nums[i]\n\t\t\tmax = maxNumber{n: nums[i], i: i}\n\t\t}\n\t}\n\n\treturn nums[:l+1]\n}\n\ntype maxNumber struct {\n\ti int\n\tn int\n}\n\nfunc findMax(nums []int, i, k int) maxNumber {\n\tmax := int(math.Inf(-1))\n\tvar j int\n\tfor ; i <= k; i++ {\n\t\tif nums[i] > max {\n\t\t\tmax = nums[i]\n\t\t\tj = i\n\t\t}\n\t}\n\treturn maxNumber{i: j, n: max}\n}\n\n// calc max\n// if current is in window then compare it\n// otherwise trigger calc max\n"
  },
  {
    "path": "Sliding Window Median/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc medianSlidingWindow(nums []int, k int) []float64 {\n\tif len(nums) == 1 {\n\t\treturn []float64{float64(nums[0])}\n\t}\n\tmedians := make([]float64, 0)\n\tvar j int\n\tfor i := k; i <= len(nums); i++ {\n\t\twindow := make([]int, k)\n\t\tcopy(window, nums[j:i])\n\t\tsort.Slice(window, func(m, k int) bool {\n\t\t\treturn window[m] < window[k]\n\t\t})\n\t\tif len(window)%2 == 1 {\n\t\t\tmedians = append(medians, float64(window[len(window)/2]))\n\t\t} else {\n\t\t\tmedians = append(medians, (float64(window[len(window)/2-1])+float64(window[len(window)/2]))/2)\n\t\t}\n\t\tj++\n\t}\n\treturn medians\n}\n"
  },
  {
    "path": "Smallest Even Multiple/kata.go",
    "content": "package Smallest_Even_Multiple\n\nimport \"math\"\n\nfunc smallestEvenMultiple(n int) int {\n\tk := float64(n) / 2\n\tu := math.Floor(k)\n\tif u == k {\n\t\treturn n\n\t}\n\treturn 2 * n\n}\n"
  },
  {
    "path": "Smallest Index With Equal Value/kata.go",
    "content": "package kata\n\nimport \"math\"\n\nfunc smallestEqual(nums []int) int {\n\n\tindex := int(math.Inf(-1))\n\tfor i, n := range nums {\n\t\tif i%10 == n {\n\t\t\tif index == int(math.Inf(-1)) || index > i {\n\t\t\t\tindex = i\n\t\t\t}\n\t\t}\n\t}\n\n\tif index == int(math.Inf(-1)) {\n\t\treturn -1\n\t}\n\n\treturn index\n}\n"
  },
  {
    "path": "Smallest Range I/kata.go",
    "content": "package Smallest_Range_I\n\nimport \"sort\"\n\nfunc smallestRangeI(nums []int, k int) int {\n\tif len(nums) == 1 {\n\t\treturn 0\n\t}\n\n\tsort.Ints(nums)\n\tmin := nums[0]\n\tmax := nums[len(nums)-1]\n\n\tmin = min + k\n\n\tdiff := max - min\n\tif diff > k {\n\t\tdiff = k\n\t}\n\n\treturn (max - diff) - min\n}\n"
  },
  {
    "path": "Sort Array By Parity/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc sortArrayByParity(A []int) []int {\n\tsort.Slice(A, func(i, j int) bool {\n\t\treturn A[i]%2 == 0\n\t})\n\treturn A\n}\n"
  },
  {
    "path": "Sort Array by Increasing Frequency/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc frequencySort(nums []int) []int {\n\n\tfrequencies := make(map[int]int)\n\tfor _, n := range nums {\n\t\tfrequencies[n]++\n\t}\n\n\tsort.Slice(nums, func(i, j int) bool {\n\t\tif frequencies[nums[i]] < frequencies[nums[j]] {\n\t\t\treturn true\n\t\t} else if frequencies[nums[i]] == frequencies[nums[j]] {\n\t\t\treturn nums[i] > nums[j]\n\t\t}\n\t\treturn false\n\t})\n\n\treturn nums\n}\n"
  },
  {
    "path": "Sort Characters By Frequency/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc frequencySort(s string) string {\n\tset := make(map[rune]int)\n\tfor _, c := range s {\n\t\tset[c]++\n\t}\n\tb := []rune(s)\n\tsort.Slice(b, func(i, j int) bool {\n\t\tif set[b[i]] == set[b[j]] && b[i] < b[j] {\n\t\t\treturn true\n\t\t} else if set[b[i]] > set[b[j]] {\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t})\n\treturn string(b)\n}\n"
  },
  {
    "path": "Sort Integers by The Number of 1 Bits/kata.go",
    "content": "package kata\n\nimport (\n\t\"sort\"\n\t\"strconv\"\n)\n\nfunc sortByBits(arr []int) []int {\n\tmapping := make(map[int]int)\n\tfor _, n := range arr {\n\t\tif _, ok := mapping[n]; !ok {\n\t\t\tcount := countBits(int64(n))\n\t\t\tmapping[n] = count\n\t\t}\n\t}\n\tsort.Slice(arr, func(i, j int) bool {\n\t\tif mapping[arr[i]] == mapping[arr[j]] {\n\t\t\treturn arr[i] < arr[j]\n\t\t}\n\t\treturn mapping[arr[i]] < mapping[arr[j]]\n\t})\n\treturn arr\n}\n\nfunc countBits(n int64) int {\n\tvar count int\n\tb := strconv.FormatInt(n, 2)\n\tfor _, char := range b {\n\t\tif char == '1' {\n\t\t\tcount++\n\t\t}\n\t}\n\treturn count\n}\n"
  },
  {
    "path": "Sort Integers by The Power Value/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc getKth(lo int, hi int, k int) int {\n\n\ttype powerValue struct {\n\t\tn, p int\n\t}\n\n\tns := make([]powerValue, hi-lo+1)\n\n\tvar i int\n\tfor x := lo; x <= hi; x++ {\n\t\ty := x\n\t\tcount := 0\n\t\tfor y != 1 {\n\t\t\tif y%2 == 0 {\n\t\t\t\ty = y / 2\n\n\t\t\t} else if y%2 == 1 {\n\t\t\t\ty = 3*y + 1\n\n\t\t\t}\n\t\t\tcount++\n\t\t}\n\n\t\tns[i] = powerValue{n: x, p: count}\n\t\ti++\n\t}\n\n\tsort.Slice(ns, func(i, j int) bool {\n\t\tif ns[i].p == ns[j].p {\n\t\t\treturn ns[i].n < ns[j].n\n\t\t}\n\t\treturn ns[i].p < ns[j].p\n\t})\n\n\treturn ns[k-1].n\n}\n"
  },
  {
    "path": "Sort the Olympic Table/q.sql",
    "content": "SELECT *\nFROM Olympic\nORDER BY gold_medals DESC,\n         silver_medals DESC,\n         bronze_medals DESC,\n         country ASC;"
  },
  {
    "path": "Sort the People/kata.go",
    "content": "package Sort_the_People\n\nimport \"sort\"\n\ntype Persons struct {\n\tNames   []string\n\tHeights []int\n}\n\nfunc (p Persons) Len() int           { return len(p.Names) }\nfunc (p Persons) Less(i, j int) bool { return p.Heights[i] > p.Heights[j] }\nfunc (p Persons) Swap(i, j int) {\n\tp.Heights[i], p.Heights[j] = p.Heights[j], p.Heights[i]\n\tp.Names[i], p.Names[j] = p.Names[j], p.Names[i]\n}\n\nfunc sortPeople(names []string, heights []int) []string {\n\tp := &Persons{Names: names, Heights: heights}\n\tsort.Sort(p)\n\treturn p.Names\n}\n"
  },
  {
    "path": "Sorting the Sentence/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nconst whitespace = ' '\n\nfunc sortSentence(s string) string {\n\n\ttype word struct {\n\t\tidx   int\n\t\tchars []byte\n\t}\n\n\twords := make([]word, 0)\n\tw := word{idx: -1, chars: make([]byte, 0)}\n\tfor i := 0; i < len(s); i++ {\n\t\tif (i+1 < len(s) && whitespace == s[i+1]) || len(s)-1 == i {\n\t\t\tidx := s[i] - 48\n\t\t\ti++\n\t\t\tw.idx = int(idx)\n\t\t\twords = append(words, w)\n\t\t\tw = word{idx: -1, chars: make([]byte, 0)}\n\t\t\tcontinue\n\t\t}\n\t\tw.chars = append(w.chars, s[i])\n\t}\n\n\tsort.Slice(words, func(i, j int) bool {\n\t\treturn words[i].idx < words[j].idx\n\t})\n\n\tsortedS := make([]byte, 0)\n\tfor _, word := range words {\n\t\tsortedS = append(sortedS, word.chars...)\n\t\tsortedS = append(sortedS, ' ')\n\t}\n\n\treturn string(sortedS[:len(sortedS)-1])\n}\n"
  },
  {
    "path": "Split With Minimum Sum/kata.go",
    "content": "package kata\n\nimport (\n\t\"math\"\n\t\"sort\"\n)\n\nfunc splitNum(num int) int {\n\tif num <= 9 {\n\t\treturn num\n\t}\n\n\tdigits := make([]int, int(math.Log10(float64(num)))+1)\n\tvar i int\n\tfor num > 0 {\n\t\tvar digit = num % 10\n\t\tnum = num / 10\n\t\tdigits[i] = digit\n\t\ti++\n\t}\n\n\tif len(digits) == 2 {\n\t\treturn digits[0] + digits[1]\n\t}\n\n\tsort.Slice(digits, func(i, j int) bool {\n\t\treturn digits[i] > digits[j]\n\t})\n\n\ta := digits[0]\n\tb := digits[1]\n\n\tvar multiplierOfA, multiplierOfB = 10, 10\n\tfor i := 2; i < len(digits); i++ {\n\t\tif i%2 == 0 {\n\t\t\tb += digits[i] * multiplierOfB\n\t\t\tmultiplierOfB = multiplierOfB * 10\n\t\t} else {\n\t\t\ta += digits[i] * multiplierOfA\n\t\t\tmultiplierOfA = multiplierOfA * 10\n\t\t}\n\t}\n\n\treturn a + b\n}\n"
  },
  {
    "path": "Split a String in Balanced Strings/kata.go",
    "content": "package kata\n\nfunc balancedStringSplit(s string) int {\n\n\tmax := 0\n\n\tcurrent := s[0]\n\tseekCounter := 1\n\tvar seek byte\n\tif current == 'R' {\n\t\tseek = 'L'\n\t} else {\n\t\tseek = 'R'\n\t}\n\n\tfor i := 1; i < len(s); i++ {\n\n\t\tif seek == s[i] && seekCounter == 1 {\n\t\t\tmax++\n\t\t\ti++\n\t\t\tif i == len(s) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcurrent = s[i]\n\t\t\tseekCounter = 1\n\t\t\tif current == 'R' {\n\t\t\t\tseek = 'L'\n\t\t\t} else {\n\t\t\t\tseek = 'R'\n\t\t\t}\n\n\t\t} else if s[i] == current {\n\t\t\tseekCounter++\n\t\t} else if s[i] == seek {\n\t\t\tseekCounter--\n\t\t}\n\t}\n\n\treturn max\n}\n"
  },
  {
    "path": "Split the Array/kata.go",
    "content": "package kata\n\nfunc isPossibleToSplit(nums []int) bool {\n\tfrequency := make(map[int]int, 0)\n\tfor _, num := range nums {\n\t\tfrequency[num]++\n\t\tif frequency[num] > 2 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "Sqrt(x)/kata.go",
    "content": "package kata\n\nimport (\n\t\"math\"\n)\n\nfunc mySqrt(x int) int {\n\treturn int(math.Sqrt(float64(x)))\n}\n"
  },
  {
    "path": "Squares of a Sorted Array/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc sortedSquares(A []int) []int {\n\tfor i := 0; i < len(A); i++ {\n\t\tA[i] = A[i] * A[i]\n\t}\n\tsort.Slice(A, func(i, j int) bool {\n\t\treturn A[i] < A[j]\n\t})\n\treturn A\n}\n"
  },
  {
    "path": "Strong Password Checker II/kata.go",
    "content": "package Strong_Password_Checker_II\n\nvar specialCharacters = map[byte]bool{'!': true, '@': true, '#': true, '$': true, '%': true, '^': true, '&': true, '*': true, '(': true, ')': true, '-': true, '+': true}\n\nfunc strongPasswordCheckerII(password string) bool {\n\n\tif len(password) < 8 {\n\t\treturn false\n\t}\n\n\tvar lowerCase bool\n\tvar upperCase bool\n\tvar digit bool\n\tvar specialCharacter bool\n\tvar adjacent bool\n\n\tj := 1\n\tfor i := 0; i < len(password); i++ {\n\n\t\tif j < len(password) && password[j] == password[i] {\n\t\t\tadjacent = true\n\t\t}\n\n\t\tif specialCharacters[password[i]] {\n\t\t\tspecialCharacter = true\n\t\t} else if password[i] >= 48 && password[i] <= 57 {\n\t\t\tdigit = true\n\t\t} else if password[i] >= 97 && password[i] <= 122 {\n\t\t\tlowerCase = true\n\t\t} else if password[i] >= 65 && password[i] <= 90 {\n\t\t\tupperCase = true\n\t\t}\n\n\t\tj++\n\n\t}\n\n\treturn lowerCase && upperCase && digit && specialCharacter && !adjacent\n}\n"
  },
  {
    "path": "Student Attendance Record I/kata.go",
    "content": "package kata\n\nconst A int = 1\nconst L int = 2\n\nfunc checkRecord(s string) bool {\n\taCounter := 0\n\tlCounter := 0\n\tfor i, c := range s {\n\t\tif c == 'A' {\n\t\t\taCounter++\n\t\t\tif aCounter > A {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else if c == 'L' {\n\t\t\tj := i - 1\n\t\t\tif j >= 0 && rune(s[j]) == c {\n\t\t\t\tlCounter++\n\t\t\t\tif lCounter > L {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlCounter = 1\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "Subdomain Visit Count/kata.go",
    "content": "package kata\n\nimport \"strconv\"\n\nfunc subdomainVisits(cpdomains []string) []string {\n\tif len(cpdomains) == 0 {\n\t\treturn make([]string, 0)\n\t}\n\n\tstats := make(map[string]int)\n\tfor _, u := range cpdomains {\n\t\tlevelBIndex := -1\n\t\tlevelAIndex := -1\n\t\tcountDot := 0\n\t\ti := 0\n\t\tfor ; i < len(u); i++ {\n\t\t\tif u[i] == ' ' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\ti++\n\t\tdomainStartIndex := i\n\t\tc, _ := strconv.Atoi(string(u[:i-1]))\n\n\t\tmarkedA := false\n\n\t\tfor ; i < len(u); i++ {\n\n\t\t\tif u[i] == '.' {\n\t\t\t\tcountDot++\n\t\t\t}\n\n\t\t\tif countDot == 1 && !markedA {\n\t\t\t\tlevelAIndex = i + 1\n\t\t\t\tmarkedA = true\n\t\t\t}\n\n\t\t\tif countDot == 2 {\n\t\t\t\tlevelBIndex = i + 1\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t}\n\n\t\tstats[string(u[domainStartIndex:])] += c\n\t\tif levelAIndex != -1 {\n\t\t\tstats[u[levelAIndex:]] += c\n\t\t}\n\t\tif levelBIndex != -1 {\n\t\t\tstats[u[levelBIndex:]] += c\n\t\t}\n\t}\n\n\tres := make([]string, len(stats))\n\n\ti := 0\n\tfor id, stat := range stats {\n\t\tres[i] = strconv.Itoa(stat) + \" \" + id\n\t\ti++\n\t}\n\n\treturn res\n}\n"
  },
  {
    "path": "Subrectangle Queries/kata.go",
    "content": "package kata\n\ntype SubrectangleQueries struct {\n\trectangle [][]int\n}\n\nfunc Constructor(rectangle [][]int) SubrectangleQueries {\n\treturn SubrectangleQueries{rectangle: rectangle}\n}\n\nfunc (this *SubrectangleQueries) UpdateSubrectangle(row1 int, col1 int, row2 int, col2 int, newValue int) {\n\tfor currentRow := row1; currentRow <= row2; currentRow++ {\n\t\tfor currentCol := col1; currentCol <= col2; currentCol++ {\n\t\t\tthis.rectangle[currentRow][currentCol] = newValue\n\t\t}\n\t}\n}\n\nfunc (this *SubrectangleQueries) GetValue(row int, col int) int {\n\treturn this.rectangle[row][col]\n}\n\n/**\n * Your SubrectangleQueries object will be instantiated and called as such:\n * obj := Constructor(rectangle);\n * obj.UpdateSubrectangle(row1,col1,row2,col2,newValue);\n * param_2 := obj.GetValue(row,col);\n */\n"
  },
  {
    "path": "Substrings of Size Three with Distinct Characters/kata.java",
    "content": "class Solution {\n    public int countGoodSubstrings(String s) {\n        var k = 3;\n        if (s.length() < k) {\n            return 0;\n        }\n\n        var characterCount = 0;\n        var wordCount = 0;\n        HashMap<Character, Integer> windowTracker = new HashMap<>();\n        for (var i = 0; i < s.length(); i++) {\n            if (windowTracker.containsKey(s.charAt(i))) {\n                var otherIndex = windowTracker.get(s.charAt(i));\n                i = otherIndex + 1;\n                windowTracker.clear();\n                characterCount = 0;\n            }\n            windowTracker.put(s.charAt(i), i);\n            characterCount++;\n            if (characterCount == k) {\n                wordCount++;\n                windowTracker.remove(s.charAt(i - (k-1)));\n                characterCount = k-1 ;\n            }\n        }\n\n        return wordCount;\n    }\n}"
  },
  {
    "path": "Subtract the Product and Sum of Digits of an Integer/kata.go",
    "content": "package kata\n\nfunc subtractProductAndSum(number int) int {\n\n\tmultiplySum := 1\n\tplusSum := 0\n\tfor number > 0 {\n\t\tval := number % 10\n\t\tmultiplySum *= val\n\t\tplusSum += val\n\t\tnumber = number / 10\n\t}\n\n\treturn multiplySum - plusSum\n}\n"
  },
  {
    "path": "Subtree of Another Tree/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc isSubtree(root *TreeNode, subRoot *TreeNode) bool {\n\treturn SearchBST(root, subRoot, subRoot.Val)\n}\n\nfunc SearchBST(root *TreeNode, subRoot *TreeNode, val int) bool {\n\tif root == nil {\n\t\treturn false\n\t}\n\tif root.Val == val {\n\t\tok := LeafsEqual(root, subRoot)\n\t\tif ok {\n\t\t\treturn true\n\t\t}\n\t}\n\tif root.Left != nil {\n\t\tok := SearchBST(root.Left, subRoot, val)\n\t\tif ok {\n\t\t\treturn true\n\t\t}\n\t}\n\tif root.Right != nil {\n\t\tok := SearchBST(root.Right, subRoot, val)\n\t\tif ok {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc LeafsEqual(root1 *TreeNode, root2 *TreeNode) bool {\n\tif root1 == nil && root2 == nil {\n\t\treturn true\n\t}\n\tif root1 == nil || root2 == nil {\n\t\treturn false\n\t}\n\n\tvalues1 := make([]NodeValue, 0)\n\tvalues2 := make([]NodeValue, 0)\n\tPickLeafValues(root1, &values2, 0, 0)\n\tPickLeafValues(root2, &values1, 0, 0)\n\n\tif len(values2) != len(values1) {\n\t\treturn false\n\t}\n\n\tfor i := 0; i < len(values1); i++ {\n\t\tif values1[i].value != values2[i].value || values1[i].lvl != values2[i].lvl || values1[i].direction != values2[i].direction {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\ntype NodeValue struct {\n\tlvl       int\n\tvalue     int\n\tdirection int\n}\n\nfunc PickLeafValues(node *TreeNode, values *[]NodeValue, lvl int, direction int) {\n\tif node == nil {\n\t\treturn\n\t}\n\t*values = append(*values, NodeValue{lvl: lvl, value: node.Val, direction: direction})\n\n\tif node.Left != nil {\n\t\tPickLeafValues(node.Left, values, lvl+1, 1)\n\t}\n\tif node.Right != nil {\n\t\tPickLeafValues(node.Right, values, lvl+1, 2)\n\t}\n}\n"
  },
  {
    "path": "Sum Multiples/kata.go",
    "content": "package kata\n\nfunc sumOfMultiples(n int) int {\n    sum := 0\n    for i := 1; i < n+1 ; i++ {\n        if i % 3 == 0 || i % 5 == 0 || i % 7 == 0 {\n            sum += i\n        }        \n    }\n    return sum\n}"
  },
  {
    "path": "Sum Root to Leaf Numbers/kata.go",
    "content": "package kata\n\nimport \"strconv\"\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc sumNumbers(root *TreeNode) int {\n\tif root == nil {\n\t\treturn 0\n\t}\n\n\tsums := make([]string, 0)\n\tf(root, &sums, \"\")\n\tvar max int\n\tfor _, s := range sums {\n\t\tsum, err := strconv.Atoi(s)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tmax = max + sum\n\t}\n\treturn max\n}\n\nfunc f(node *TreeNode, sums *[]string, n string) {\n\tval := strconv.Itoa(node.Val)\n\tn = n + val\n\n\tif node.Left == nil && node.Right == nil {\n\t\t*sums = append(*sums, n)\n\t\treturn\n\t}\n\n\tif node.Left != nil {\n\t\tf(node.Left, sums, n)\n\t}\n\n\tif node.Right != nil {\n\t\tf(node.Right, sums, n)\n\t}\n}\n"
  },
  {
    "path": "Sum in a Matrix/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc matrixSum(nums [][]int) int {\n\n\tfor i := 0; i < len(nums); i++ {\n\t\tsort.Ints(nums[i])\n\t}\n\n\tvar sum int\n\tfor i := 0; i < len(nums[0]); i++ {\n\t\tvar max int\n\t\tfor j := len(nums) - 1; j >= 0; j-- {\n\t\t\tif max < nums[j][i] {\n\t\t\t\tmax = nums[j][i]\n\t\t\t}\n\t\t}\n\t\tsum += max\n\t}\n\n\treturn sum\n}\n"
  },
  {
    "path": "Sum of Digits in Base K/kata.go",
    "content": "package kata\n\nimport \"math/bits\"\n\nfunc sumBase(n int, k int) int {\n\n\tvar sum int\n\tfor n != 0 {\n\t\tq, r := bits.Div(0, uint(n), uint(k))\n\t\tn = int(q)\n\t\tsum += int(r)\n\t}\n\n\treturn sum\n}\n"
  },
  {
    "path": "Sum of Digits in the Minimum Number/kata.go",
    "content": "package kata\n\nfunc sumOfDigits(nums []int) int {\n\tmin := -1\n\tfor _, n := range nums {\n\t\tif min == -1 || min > n {\n\t\t\tmin = n\n\t\t}\n\t}\n\n\tvar sum int\n\tfor {\n\t\tr := min % 10\n\t\tmin = min / 10\n\t\tsum += r\n\t\tif min == 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif sum%2 == 0 {\n\t\treturn 1\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "Sum of Digits of String After Convert/kata.go",
    "content": "package kata\n\nfunc getLucky(s string, k int) int {\n\n\tvar sum uint64\n\tfor i := len(s) - 1; i >= 0; i-- {\n\t\tk := uint64(s[i] - 96)\n\n\t\tif k > 9 {\n\t\t\tfor k != 0 {\n\t\t\t\tr := k % 10\n\t\t\t\tk /= 10\n\t\t\t\tsum += r\n\t\t\t}\n\n\t\t} else {\n\t\t\tsum += k\n\t\t}\n\t}\n\n\tfor k-1 > 0 {\n\t\tnewSum := sum\n\t\tsum = 0\n\t\tfor newSum != 0 {\n\t\t\tr := newSum % 10\n\t\t\tnewSum /= 10\n\t\t\tsum += r\n\t\t}\n\t\tk--\n\t}\n\treturn int(sum)\n}\n"
  },
  {
    "path": "Sum of Even Numbers After Queries/kata.java",
    "content": "class Solution {\n    public int[] sumEvenAfterQueries(int[] nums, int[][] queries) {\n        var res = new int[queries.length];\n        var sum = 0;\n        for (var num : nums) {\n            if (num % 2 == 0) {\n                sum += num;\n            }\n        }\n        for (var i = 0; i < queries.length; i++) {\n            var oldNum = nums[queries[i][1]];\n            var newNum = nums[queries[i][1]] + queries[i][0];\n            if (oldNum % 2 == 0) {\n                sum = sum - oldNum;\n            }\n            if (newNum % 2 == 0) {\n                sum = sum + newNum;\n            }\n            nums[queries[i][1]] = newNum;\n            res[i] = sum;\n        }\n        return res;\n    }\n}"
  },
  {
    "path": "Sum of Left Leaves/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc sumOfLeftLeaves(root *TreeNode) int {\n\n\tsum := new(int)\n\tfindLeftLeaves(root, -1, sum)\n\treturn *sum\n}\n\nfunc findLeftLeaves(node *TreeNode, kind int, sum *int) {\n\tif node == nil {\n\t\treturn\n\t}\n\tif kind == 1 && node.Left == nil && node.Right == nil {\n\t\t*sum += node.Val\n\t\treturn\n\t}\n\tif node.Left != nil {\n\t\tfindLeftLeaves(node.Left, 1, sum)\n\t}\n\n\tif node.Right != nil {\n\t\tfindLeftLeaves(node.Right, 0, sum)\n\t}\n}\n"
  },
  {
    "path": "Sum of Squares of Special Elements/kata.go",
    "content": "package kata\n\nfunc sumOfSquares(nums []int) int {\n\tn := len(nums)\n\tvar sum int\n\tfor i := 0; i < n; i++ {\n\t\tif n%(i+1) == 0 {\n\t\t\tsum += nums[i] * nums[i]\n\t\t}\n\t}\n\treturn sum\n}\n"
  },
  {
    "path": "Sum of Unique Elements/kata.go",
    "content": "package kata\n\nfunc sumOfUnique(nums []int) int {\n\tset := make(map[int]int)\n\n\tfor _, num := range nums {\n\t\tset[num]++\n\t}\n\n\tvar sum int\n\tfor num, count := range set {\n\t\tif count > 1 {\n\t\t\tcontinue\n\t\t}\n\t\tsum += num\n\t}\n\n\treturn sum\n}\n"
  },
  {
    "path": "Sum of Values at Indices With K Set Bits/kata.go",
    "content": "package kata\n\nfunc sumIndicesWithKSetBits(nums []int, k int) int {\n\tvar sum int\nouterLoop:\n\tfor i, num := range nums {\n\t\tvar count int\n\t\tfor i > 0 {\n\t\t\tcount += i & 1\n\t\t\tif count > k {\n\t\t\t\tcontinue outerLoop\n\t\t\t}\n\t\t\ti >>= 1\n\t\t}\n\t\tif count == k {\n\t\t\tsum += num\n\t\t}\n\t}\n\treturn sum\n}\n"
  },
  {
    "path": "Summary Ranges/kata.go",
    "content": "package kata\n\nimport \"strconv\"\n\nfunc summaryRanges(nums []int) []string {\n\tif len(nums) == 0 {\n\t\treturn nil\n\t}\n\tif len(nums) == 1 {\n\t\treturn []string{strconv.Itoa(nums[0])}\n\t}\n\tbegin := nums[0]\n\tlast := -1\n\tcounter := 0\n\tcontinuous := make([]string, 0)\n\tfor i := 1; i < len(nums); i++ {\n\t\tif nums[i]-nums[i-1] == 1 {\n\t\t\tlast = nums[i]\n\t\t\tcounter = counter + 1\n\t\t\tif len(nums)-1 == i {\n\t\t\t\tcontinuous = append(continuous, strconv.Itoa(begin)+\"->\"+strconv.Itoa(last))\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif counter > 0 {\n\t\t\tcontinuous = append(continuous, strconv.Itoa(begin)+\"->\"+strconv.Itoa(last))\n\t\t} else {\n\t\t\tcontinuous = append(continuous, strconv.Itoa(begin))\n\t\t}\n\n\t\tbegin = nums[i]\n\t\tcounter = 0\n\t\tif len(nums)-1 == i {\n\t\t\tcontinuous = append(continuous, strconv.Itoa(nums[i]))\n\t\t}\n\t}\n\treturn continuous\n}\n"
  },
  {
    "path": "Swap Nodes in Pairs/kata.go",
    "content": "package kata\n\n/**\n * Definition for singly-linked list.\n * type ListNode struct {\n *     Val int\n *     Next *ListNode\n * }\n */\nfunc swapPairs(head *ListNode) *ListNode {\n\tif head == nil || head.Next == nil {\n\t\treturn head\n\t}\n\tcurrent := head.Next\n\tpre := head\n\tfor current != nil && pre != nil {\n\t\tpre.Val, current.Val = current.Val, pre.Val\n\t\tpre = current.Next\n\t\tif current.Next != nil {\n\t\t\tcurrent = current.Next.Next\n\t\t}\n\t}\n\treturn head\n}\n"
  },
  {
    "path": "Swap Salary/kata.sql",
    "content": "package kata\n\nUPDATE salary\nSET\n    sex = CASE sex\n        WHEN 'm' THEN 'f'\n        ELSE 'm'\n    END;\n"
  },
  {
    "path": "Symmetric Tree/kata.java",
    "content": "/**\n * Definition for a binary tree node.\n * public class TreeNode {\n *     int val;\n *     TreeNode left;\n *     TreeNode right;\n *     TreeNode() {}\n *     TreeNode(int val) { this.val = val; }\n *     TreeNode(int val, TreeNode left, TreeNode right) {\n *         this.val = val;\n *         this.left = left;\n *         this.right = right;\n *     }\n * }\n */\nclass Solution {\n    public boolean isSymmetric(TreeNode root) {\n        return verify(root.left, root.right);\n    }\n    private boolean verify(TreeNode nodeLeft, TreeNode nodeRight) {\n        if (nodeLeft == null && nodeRight == null) {\n            return true;\n        } else if (nodeLeft == null || nodeRight == null) {\n            return false;\n        }else if (nodeLeft.val != nodeRight.val) {\n            return false;\n        }\n        var a = verify(nodeLeft.left, nodeRight.right);\n        var b = verify(nodeLeft.right, nodeRight.left);\n        return a & b;\n    }\n}"
  },
  {
    "path": "Take Gifts From the Richest Pile/kata.java",
    "content": "class Solution {\n    public long pickGifts(int[] gifts, int k) {\n\n        PriorityQueue<Integer> q = new PriorityQueue<Integer>(gifts.length, Collections.reverseOrder());\n        for (var gift: gifts) {\n            q.add(gift);\n        }\n\n        while(k >= 1) {\n             var gift = q.poll();\n             q.add((int) Math.floor(Math.sqrt((double) gift)));\n             k--;\n        }\n\n        var sum = 0l;\n        while(!q.isEmpty()) {\n            sum += q.poll().intValue();\n        }\n\n        return sum;\n    }\n}"
  },
  {
    "path": "Tasks Count in the Weekend/q.sql",
    "content": "SELECT Sum(CASE\n               WHEN Weekday(submit_date) <= 4 THEN 1\n               ELSE 0\n    END) AS weekend_cnt,\n       Sum(CASE\n               WHEN Weekday(submit_date) > 4 THEN 1\n               ELSE 0\n           END) AS working_cnt\nFROM   tasks;"
  },
  {
    "path": "The Airport With the Most Traffic/q.sql",
    "content": "WITH cte (airport_id, flights_count_max) AS\n         (\n             SELECT\n                 airport_id,\n                 SUM(flights_count) AS flights_count_max\n             FROM\n                 (\n                     SELECT\n                         departure_airport AS airport_id,\n                         flights_count\n                     FROM\n                         Flights\n                     UNION ALL\n                     SELECT\n                         arrival_airport AS airport_id,\n                         flights_count\n                     FROM\n                         Flights\n                 )\n                     AS Flights\n             GROUP BY\n                 airport_id\n         )\n\nSELECT\n    airport_id\nFROM\n    cte\nWHERE\n        flights_count_max =\n        (\n            SELECT\n                MAX(flights_count_max)\n            FROM\n                cte\n        )\n;\n"
  },
  {
    "path": "The Employee That Worked on the Longest Task/kata.java",
    "content": "class Solution {\n    public int hardestWorker(int n, int[][] logs) {\n        if (logs.length == 0) {\n            return -1;\n        }\n        var id = logs[0][0];\n        var taskSpanTime = logs[0][1];\n        for (var i = 1; i < logs.length; i++) {\n            var currentSpan = logs[i][1] - logs[i-1][1];\n            if (taskSpanTime == currentSpan && id > logs[i][0]) {\n                id = logs[i][0];\n                taskSpanTime = currentSpan;\n            } else if (taskSpanTime < currentSpan) {\n                id = logs[i][0];\n                taskSpanTime = currentSpan;\n            }\n        }\n        return id;\n    }\n}"
  },
  {
    "path": "The K Weakest Rows in a Matrix/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc kWeakestRows(mat [][]int, k int) []int {\n\tpair := make([][]int, len(mat))\n\tfor i := 0; i < len(mat); i++ {\n\t\tvar sum int\n\t\tfor j := 0; j < len(mat[i]); j++ {\n\t\t\tsum += mat[i][j]\n\t\t}\n\t\tpair[i] = []int{sum, i}\n\t}\n\tsort.Slice(pair, func(i, j int) bool {\n\t\tif pair[i][0] == pair[j][0] {\n\t\t\treturn pair[i][1] < pair[j][1]\n\t\t}\n\t\treturn pair[i][0] < pair[j][0]\n\t})\n\tidx := make([]int, k)\n\tfor i := 0; i < k; i++ {\n\t\tidx[i] = pair[i][1]\n\t}\n\treturn idx\n}\n"
  },
  {
    "path": "The Latest Login in 2020/q.sql",
    "content": "SELECT\n    user_id,\n    MAX(time_stamp) AS last_stamp\nFROM\n    Logins\nWHERE\n    YEAR(time_stamp) = 2020\nGROUP BY\n    user_id;"
  },
  {
    "path": "The Number of Employees Which Report to Each Employee/q.sql",
    "content": "SELECT a.reports_to as employee_id, b.name, COUNT(a.reports_to) AS reports_count, ROUND(AVG(a.age), 0) AS average_age\nFROM Employees AS a INNER JOIN Employees AS b ON a.reports_to = b.employee_id\nWHERE a.employee_id IN (SELECT DISTINCT(employee_id) FROM Employees WHERE reports_to IS NOT NULL)\nGROUP BY a.reports_to ORDER BY a.reports_to;\n"
  },
  {
    "path": "The Number of Rich Customers/q.sql",
    "content": "SELECT COUNT(DISTINCT(customer_id)) AS rich_count FROM Store WHERE amount > 500\n"
  },
  {
    "path": "The Number of Users That Are Eligible for Discount/q.sql",
    "content": "CREATE FUNCTION getUserIDs(startDate DATE, endDate DATE, minAmount INT) RETURNS INT\nBEGIN\nRETURN (\n    SELECT COUNT(DISTINCT(user_id))\n    FROM Purchases\n    WHERE time_stamp <= endDate AND time_stamp >= startDate AND amount >= minAmount\n);\nEND"
  },
  {
    "path": "The Users That Are Eligible for Discount/q.sql",
    "content": "CREATE PROCEDURE getUserIDs(startDate DATE, endDate DATE, minAmount INT)\nBEGIN\nSELECT DISTINCT(user_id)\nFROM Purchases\nWHERE time_stamp <= endDate AND time_stamp >= startDate AND amount >= minAmount\nORDER BY user_id ASC;\nEND"
  },
  {
    "path": "The Winner University/q.sql",
    "content": "SELECT\n    CASE WHEN ((SELECT COUNT(*) FROM NewYork WHERE score >= 90) < (SELECT COUNT(*) FROM California WHERE score >= 90))\n             THEN \"California University\"\n         WHEN ((SELECT COUNT(*) FROM NewYork WHERE score >= 90) = (SELECT COUNT(*) FROM California WHERE score >= 90))\n             THEN \"No Winner\"\n         ELSE \"New York University\"\n        END AS winner\nFROM DUAL;"
  },
  {
    "path": "Third Maximum Number/kata.go",
    "content": "package kata\n\nimport (\n\t\"sort\"\n)\n\nfunc thirdMax(nums []int) int {\n\tif len(nums) == 0 {\n\t\treturn -1\n\t}\n\tsort.Slice(nums, func(i, j int) bool {\n\t\treturn nums[i] > nums[j]\n\t})\n\tseen := map[int]struct{}{}\n\tcount := 0\n\tfor i := 0; i < len(nums); i++ {\n\t\t_, ok := seen[nums[i]]\n\t\tif ok {\n\t\t\tcontinue\n\t\t}\n\t\tseen[nums[i]] = struct{}{}\n\t\tcount = count + 1\n\t\tif count == 3 {\n\t\t\treturn nums[i]\n\t\t}\n\t}\n\treturn nums[0]\n}\n"
  },
  {
    "path": "Thousand Separator/kata.go",
    "content": "package kata\n\nimport \"strconv\"\n\nfunc thousandSeparator(n int) string {\n\ts := strconv.Itoa(n)\n\tk := make([]byte, 0)\n\tvar count int\n\tfor i := len(s) - 1; i >= 0; i-- {\n\t\tif count == 3 {\n\t\t\tk = append(k, byte(46))\n\t\t\tcount = 0\n\t\t}\n\t\tcount++\n\t\tk = append(k, s[i])\n\t}\n\tl := make([]byte, len(k))\n\tj := 0\n\tfor i := len(k) - 1; i >= 0; i-- {\n\t\tl[j] = k[i]\n\t\tj++\n\t}\n\treturn string(l)\n}\n"
  },
  {
    "path": "Three Consecutive Odds/kata.go",
    "content": "package kata\n\nfunc threeConsecutiveOdds(arr []int) bool {\n\n\tvar c int\n\tfor _, n := range arr {\n\t\tif n%2 == 1 {\n\t\t\tc++\n\t\t\tif c == 3 {\n\t\t\t\treturn true\n\t\t\t}\n\t\t} else {\n\t\t\tc = 0\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "Time Based Key-Value Store/kata.go",
    "content": "package kata\n\ntype item struct {\n\tvalue     string\n\ttimestamp int\n}\n\ntype TimeMap struct {\n\tstore map[string][]item\n}\n\n/** Initialize your data structure here. */\nfunc Constructor() TimeMap {\n\treturn TimeMap{store: make(map[string][]item)}\n}\n\nfunc (this *TimeMap) Set(key string, value string, timestamp int) {\n\tv, ok := this.store[key]\n\tif !ok {\n\t\tlist := make([]item, 1)\n\t\tlist[0].value = value\n\t\tlist[0].timestamp = timestamp\n\t\tthis.store[key] = list\n\t\treturn\n\t}\n\tv = append(v, item{value: value, timestamp: timestamp})\n\tthis.store[key] = v\n}\n\nfunc (this *TimeMap) Get(key string, timestamp int) string {\n\tlist, ok := this.store[key]\n\tif !ok {\n\t\treturn \"\"\n\t}\n\tmax := -1\n\tindex := 0\n\tmin := -1\n\tfor i, item := range list {\n\t\tif item.timestamp == timestamp {\n\t\t\treturn item.value\n\t\t}\n\t\tif max == -1 || max < item.timestamp && timestamp > item.timestamp {\n\t\t\tmax = item.timestamp\n\t\t\tindex = i\n\t\t}\n\t\tif min == -1 || min > item.timestamp {\n\t\t\tmin = item.timestamp\n\t\t}\n\t}\n\tif min > timestamp {\n\t\treturn \"\"\n\t}\n\treturn list[index].value\n}\n\n/**\n * Your TimeMap object will be instantiated and called as such:\n * obj := Constructor();\n * obj.Set(key,value,timestamp);\n * param_2 := obj.Get(key,timestamp);\n */\n"
  },
  {
    "path": "To Be Or Not To Be/kata.ts",
    "content": "type ToBeOrNotToBe = {\n    toBe: (val: any) => boolean;\n    notToBe: (val: any) => boolean;\n};\n\nfunction expect(val: any): ToBeOrNotToBe {\n    return new toBeOrNotToBe(val);\n};\n\n\nclass toBeOrNotToBe implements ToBeOrNotToBe {\n  private val: any;\n  \n  public constructor(val: any) {\n    this.val = val;\n  }\n\n  public toBe(val: any) :boolean {\n    let ok: boolean = this.val === val\n    if (!ok) {\n        throw new Error(\"Not Equal\");\n    }\n    return ok\n  }\n\n\n  public notToBe(val: any) :boolean {\n    let ok: boolean = this.val !== val\n    if (!ok) {\n        throw new Error(\"Equal\");\n    }\n    return ok\n  }\n\n}\n\n/**\n * expect(5).toBe(5); // true\n * expect(5).notToBe(5); // throws \"Equal\"\n */"
  },
  {
    "path": "To Lower Case/kata.go",
    "content": "package kata\n\nfunc toLowerCase(str string) string {\n\tif len(str) == 0 {\n\t\treturn str\n\t}\n\tb := []byte(str)\n\tvar i int\n\tfor _, c := range b {\n\t\tif c >= 65 && c <= 90 {\n\t\t\tb[i] = b[i] + 32\n\t\t}\n\t\ti++\n\t}\n\treturn string(b)\n}\n"
  },
  {
    "path": "Toeplitz Matrix/kata.go",
    "content": "package kata\n\nfunc isToeplitzMatrix(matrix [][]int) bool {\n\tfor i := 0; i < len(matrix[0]); i++ {\n\t\tj := 0\n\t\tk := i\n\t\tlastValue := matrix[0][k]\n\t\tfor {\n\n\t\t\tif len(matrix) <= j {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif len(matrix[0]) <= k {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif lastValue != matrix[j][k] {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tlastValue = matrix[j][k]\n\n\t\t\tj = j + 1\n\t\t\tk++\n\t\t}\n\t}\n\n\tfor i := len(matrix) - 1; i >= 1; i-- {\n\t\tj := i\n\t\tk := 0\n\t\tlastValue := matrix[j][k]\n\t\tfor {\n\n\t\t\tif len(matrix) <= j {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif len(matrix[0]) <= k {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif lastValue != matrix[j][k] {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tlastValue = matrix[j][k]\n\n\t\t\tj = j + 1\n\t\t\tk++\n\t\t}\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "Top K Frequent Elements/kata.go",
    "content": "package kata\n\nimport \"container/heap\"\n\ntype Item struct {\n\tvalue    int\n\tpriority int\n\tindex    int\n}\n\nfunc topKFrequent(nums []int, k int) []int {\n\tif len(nums) == 0 {\n\t\treturn nil\n\t}\n\tpq := make(PriorityQueue, 0)\n\tcounter := make(map[int]int)\n\tfor _, n := range nums {\n\t\tcounter[n] = counter[n] + 1\n\t}\n\tvar i int\n\tfor n, c := range counter {\n\t\titem := &Item{\n\t\t\tvalue:    n,\n\t\t\tpriority: c,\n\t\t\tindex:    i,\n\t\t}\n\t\tpq = append(pq, item)\n\t\ti++\n\t}\n\tnums = nil\n\theap.Init(&pq)\n\tfor pq.Len() > 0 && k > 0 {\n\t\tnums = append(nums, heap.Pop(&pq).(*Item).value)\n\t\tk--\n\t}\n\treturn nums\n}\n\ntype PriorityQueue []*Item\n\nfunc (pq PriorityQueue) Len() int { return len(pq) }\n\nfunc (pq PriorityQueue) Less(i, j int) bool {\n\tif pq[i].priority > pq[j].priority {\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (pq PriorityQueue) Swap(i, j int) {\n\tpq[i], pq[j] = pq[j], pq[i]\n\tpq[i].index = i\n\tpq[j].index = j\n}\n\nfunc (pq *PriorityQueue) Pop() interface{} {\n\told := *pq\n\tn := len(old)\n\titem := old[n-1]\n\titem.index = -1\n\t*pq = old[0 : n-1]\n\treturn item\n}\n\nfunc (pq *PriorityQueue) Push(x interface{}) {\n\tn := len(*pq)\n\titem := x.(*Item)\n\titem.index = n\n\t*pq = append(*pq, item)\n}\n"
  },
  {
    "path": "Top K Frequent Words/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\ntype Prio struct {\n\tword string\n\tfreq int\n}\n\nfunc topKFrequent(words []string, k int) []string {\n\tif len(words) == 0 {\n\t\treturn nil\n\t}\n\tcounter := make(map[string]int)\n\tfor i := range words {\n\t\tcounter[words[i]]++\n\t}\n\n\tprios := make([]Prio, len(counter))\n\tvar i int\n\tfor w, c := range counter {\n\t\tprio := Prio{\n\t\t\tword: w,\n\t\t\tfreq: c,\n\t\t}\n\t\tprios[i] = prio\n\t\ti++\n\t}\n\tsort.Slice(prios, func(i, j int) bool {\n\t\tif prios[i].freq == prios[j].freq {\n\t\t\treturn prios[i].word < prios[j].word\n\t\t}\n\t\treturn prios[i].freq > prios[j].freq\n\t})\n\n\tprios = prios[:k]\n\tmatchedWords := make([]string, len(prios))\n\tfor i := range prios {\n\t\tmatchedWords[i] = prios[i].word\n\t}\n\treturn matchedWords\n}\n"
  },
  {
    "path": "Top Travellers/q.sql",
    "content": "SELECT name, COALESCE(SUM(distance), 0) AS travelled_distance\nFROM Users AS u\nLEFT JOIN Rides AS r\nON r.user_id = u.id\nGROUP BY u.id\nORDER BY travelled_distance DESC, name ASC;"
  },
  {
    "path": "Transpose Matrix/kata.go",
    "content": "package kata\n\nfunc transpose(matrix [][]int) [][]int {\n\n\ttransposeMatrix := make([][]int, len(matrix[0]))\n\tfor i := 0; i < len(matrix[0]); i++ {\n\t\ttransposeMatrix[i] = make([]int, len(matrix))\n\t}\n\n\tvar k, l int\n\tfor i := 0; i < len(matrix); i++ {\n\t\tfor j := 0; j < len(matrix[i]); j++ {\n\t\t\ttransposeMatrix[j][i] = matrix[i][j]\n\t\t\tk++\n\t\t}\n\t\tk = 0\n\t\tl++\n\t}\n\n\treturn transposeMatrix\n}\n"
  },
  {
    "path": "Triangle Judgement/kata.sql",
    "content": "SELECT x, y, z, IF((z+y > x AND x+y > z AND z+x > y), 'Yes', 'No') AS triangle FROM Triangle"
  },
  {
    "path": "Truncate Sentence/kata.go",
    "content": "package kata\n\nconst whitespace = ' '\n\nfunc truncateSentence(s string, k int) string {\n\tvar count int\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] == whitespace {\n\t\t\tcount++\n\t\t}\n\n\t\tif count == k {\n\t\t\treturn s[:i]\n\t\t}\n\t}\n\treturn s\n}\n"
  },
  {
    "path": "Two Furthest Houses With Different Colors/kata.go",
    "content": "package Two_Furthest_Houses_With_Different_Colors\n\nfunc maxDistance(colors []int) int {\n\ta := colors[0]\n\tb := colors[len(colors)-1]\n\tleft := -1\n\tright := -1\n\tvar i int\n\tfor j := len(colors) - 1; j >= 1; j-- {\n\t\tif left == -1 && a != colors[j] {\n\t\t\tleft = j\n\t\t}\n\t\tif right == -1 && b != colors[i] {\n\t\t\tright = j\n\t\t}\n\t\ti++\n\t}\n\n\tif left > right {\n\t\treturn left\n\t}\n\n\treturn right\n}\n"
  },
  {
    "path": "Two Out of Three/kata.go",
    "content": "package Two_Out_of_Three\n\nfunc twoOutOfThree(nums1 []int, nums2 []int, nums3 []int) []int {\n\n\ttype numCounter struct {\n\t\ta, b, c int\n\t}\n\n\tcounter := make(map[int]numCounter)\n\n\tfor _, num := range nums1 {\n\t\tif counter[num].a == 0 {\n\t\t\tcounter[num] = numCounter{a: 1, b: 0, c: 0}\n\t\t}\n\t}\n\n\tfor _, num := range nums2 {\n\t\tc := counter[num]\n\t\tif c.b == 0 {\n\t\t\tc.b++\n\t\t\tcounter[num] = c\n\t\t}\n\t}\n\n\tfor _, num := range nums3 {\n\t\tc := counter[num]\n\t\tif c.c == 0 {\n\t\t\tc.c++\n\t\t\tcounter[num] = c\n\t\t}\n\t}\n\n\tmatched := make([]int, 0)\n\tfor num, c := range counter {\n\t\tif (c.a + c.b + c.c) >= 2 {\n\t\t\tmatched = append(matched, num)\n\t\t}\n\t}\n\n\treturn matched\n}\n"
  },
  {
    "path": "Two Sum/kata.py",
    "content": "package kata\n\nfrom itertools import permutations  \n        \n\nclass Solution:\n    def twoSum(self, nums: List[int], target: int) -> List[int]:\n        perm = permutations(nums, 2)\n        a = None\n        b = None\n        for pair in perm:\n            if target == pair[0] + pair[1]:\n                a = pair[0]\n                b = pair[1]  \n                break\n        \n        j = None\n        k = None\n        for i in range(len(nums)):\n            if k != None and j != None:\n                break\n            \n            if j == None and nums[i] == b:\n                j = i\n            elif k == None and nums[i] == a:\n                k = i    \n        \n        return [j, k]\n"
  },
  {
    "path": "Ugly Number/kata.go",
    "content": "package kata\n\nfunc isUgly(num int) bool {\n\tif num == 1 {\n\t\treturn true\n\t}\n\n\tif num <= 0 {\n\t\treturn false\n\t}\n\n\tfor {\n\t\tif num == 3 || num == 5 || num == 2 {\n\t\t\treturn true\n\t\t}\n\n\t\tif num%2 == 0 {\n\t\t\tnum = num / 2\n\t\t\tcontinue\n\t\t} else if num%3 == 0 {\n\t\t\tnum = num / 3\n\t\t\tcontinue\n\t\t} else if num%5 == 0 {\n\t\t\tnum = num / 5\n\t\t\tcontinue\n\t\t}\n\n\t\tbreak\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "Uncommon Words from Two Sentences/kata.go",
    "content": "package kata\n\nfunc uncommonFromSentences(A string, B string) []string {\n\ttype WordCounter struct {\n\t\tA int\n\t\tB int\n\t}\n\traw := make([]byte, 0)\n\tset := make(map[string]WordCounter)\n\tfor i := 0; i < len(A); i++ {\n\t\tif A[i] == ' ' || len(A)-1 == i {\n\t\t\tif len(A)-1 == i {\n\t\t\t\traw = append(raw, A[i])\n\t\t\t}\n\n\t\t\tword := string(raw)\n\t\t\tv, ok := set[word]\n\t\t\tif ok {\n\t\t\t\tv.A = v.A + 1\n\t\t\t\tset[word] = v\n\t\t\t} else {\n\t\t\t\tset[word] = WordCounter{A: 1}\n\t\t\t}\n\t\t\traw = make([]byte, 0)\n\t\t\tcontinue\n\t\t}\n\t\traw = append(raw, A[i])\n\t}\n\traw = make([]byte, 0)\n\tfor i := 0; i < len(B); i++ {\n\t\tif B[i] == ' ' || len(B)-1 == i {\n\t\t\tif len(B)-1 == i {\n\t\t\t\traw = append(raw, B[i])\n\t\t\t}\n\n\t\t\tword := string(raw)\n\t\t\tv, ok := set[word]\n\t\t\tif ok {\n\t\t\t\tv.B = v.B + 1\n\t\t\t\tset[word] = v\n\t\t\t} else {\n\t\t\t\tset[word] = WordCounter{B: 1}\n\t\t\t}\n\t\t\traw = make([]byte, 0)\n\t\t\tcontinue\n\t\t}\n\t\traw = append(raw, B[i])\n\t}\n\twords := make([]string, 0)\n\tfor w, c := range set {\n\t\tif c.A == 1 && c.B == 0 || c.A == 0 && c.B == 1 {\n\t\t\twords = append(words, w)\n\t\t}\n\t}\n\treturn words\n}\n"
  },
  {
    "path": "Unique Morse Code Words/kata.go",
    "content": "package kata\n\nvar encoder []string = []string{\".-\", \"-...\", \"-.-.\", \"-..\", \".\", \"..-.\", \"--.\", \"....\", \"..\", \".---\", \"-.-\", \".-..\", \"--\", \"-.\", \"---\", \".--.\", \"--.-\", \".-.\", \"...\", \"-\", \"..-\", \"...-\", \".--\", \"-..-\", \"-.--\", \"--..\"}\n\nfunc uniqueMorseRepresentations(words []string) int {\n\n\tuniqueTransformations := map[string]bool{}\n\tfor _, word := range words {\n\t\tvar encodedWord string\n\t\tfor _, char := range word {\n\t\t\tencodedWord += encoder[int(char-97)]\n\t\t}\n\t\tuniqueTransformations[encodedWord] = true\n\t}\n\n\treturn len(uniqueTransformations)\n}\n"
  },
  {
    "path": "Unique Number of Occurrences/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc uniqueOccurrences(arr []int) bool {\n\tcounter := make(map[int]int)\n\tfor i := 0; i < len(arr); i++ {\n\t\tcounter[arr[i]] = counter[arr[i]] + 1\n\t}\n\n\tvalues := make([]int, len(counter))\n\tvar i int\n\tfor _, c := range counter {\n\t\tvalues[i] = c\n\t\ti++\n\t}\n\n\tsort.Slice(values, func(i, j int) bool {\n\t\treturn values[i] < values[j]\n\t})\n\n\tlast := -1\n\tfor _, a := range values {\n\t\tif a == last {\n\t\t\treturn false\n\t\t}\n\t\tlast = a\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "Unique Orders and Customers Per Month/q.sql",
    "content": "SELECT DATE_FORMAT(order_date, \"%Y-%m\") AS month,\n       COUNT(order_id) AS order_count,\n       COUNT(DISTINCT customer_id) AS customer_count\nFROM Orders\nWHERE invoice > 20\nGROUP BY DATE_FORMAT(order_date, \"%Y-%m\");"
  },
  {
    "path": "Univalued Binary Tree/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc isUnivalTree(root *TreeNode) bool {\n\tset := make(map[int]struct{})\n\tisValid(root, set)\n\tif len(set) == 1 {\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc isValid(node *TreeNode, set map[int]struct{}) {\n\tif node == nil {\n\t\treturn\n\t}\n\n\tset[node.Val] = struct{}{}\n\n\tif node.Left != nil {\n\t\tisValid(node.Left, set)\n\t}\n\n\tif node.Right != nil {\n\t\tisValid(node.Right, set)\n\t}\n}\n"
  },
  {
    "path": "Valid Anagram/kata.go",
    "content": "package kata\n\nimport \"sort\"\n\nfunc isAnagram(s string, t string) bool {\n\tif len(s) != len(t) {\n\t\treturn false\n\t}\n\tsb := []byte(s)\n\ttb := []byte(t)\n\tsort.Slice(tb, func(i, j int) bool {\n\t\treturn tb[i] < tb[j]\n\t})\n\tsort.Slice(sb, func(i, j int) bool {\n\t\treturn sb[i] < sb[j]\n\t})\n\tif string(tb) == string(sb) {\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "Valid Mountain Array/kata.go",
    "content": "package kata\n\nfunc validMountainArray(A []int) bool {\n\tif len(A) < 2 {\n\t\treturn false\n\t}\n\tif A[0] >= A[1] || A[len(A)-2] < A[len(A)-1] {\n\t\treturn false\n\t}\n\tvar down bool\n\tfor i := 1; i < len(A); i++ {\n\t\tif A[i-1] > A[i] {\n\t\t\tdown = true\n\t\t}\n\t\tif (A[i-1] < A[i] && down) || A[i-1] == A[i] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "Valid Palindrome/kata.go",
    "content": "package kata\n\nfunc isPalindrome(s string) bool {\n\tif len(s) == 0 {\n\t\treturn true\n\t}\n\n\tj := len(s) - 1\n\tfor i := 0; i < len(s)/2; i++ {\n\n\t\tok, addI := isValidChar(s[i])\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tok, addJ := isValidChar(s[j])\n\t\tif !ok {\n\t\t\tj--\n\t\t\ti--\n\t\t\tcontinue\n\t\t}\n\n\t\tif (int(s[i]) + addI) != (int(s[j]) + addJ) {\n\t\t\treturn false\n\t\t}\n\t\tj--\n\t}\n\treturn true\n}\n\nfunc isValidChar(char byte) (bool, int) {\n\tif char >= 97 && char <= 122 {\n\t\treturn true, 0\n\t} else if char >= 65 && char <= 90 {\n\t\treturn true, 32\n\t} else if char >= 48 && char <= 57 {\n\t\treturn true, 0\n\t}\n\treturn false, 0\n}\n"
  },
  {
    "path": "Valid Palindrome II/kata.go",
    "content": "package kata\n\nfunc validPalindrome(s string) bool {\n\tj := len(s) - 1\n\tJidx := -1\n\tIidx := -1\n\tfor i := 0; i < len(s)/2; i++ {\n\t\tif s[i] != s[j] {\n\t\t\tJidx = j\n\t\t\tIidx = i\n\t\t\tbreak\n\t\t}\n\t\tj--\n\t}\n\n\tb := makeValid(s, Iidx)\n\tvalidI := IsValid(b)\n\n\tb = makeValid(s, Jidx)\n\tvalidJ := IsValid(b)\n\n\treturn validJ || validI\n}\n\nfunc makeValid(s string, idx int) []byte {\n\tb := make([]byte, 0)\n\tfor i := 0; i < len(s); i++ {\n\t\tif i == idx && idx != -1 {\n\t\t\tcontinue\n\t\t}\n\t\tb = append(b, s[i])\n\t}\n\treturn b\n}\n\nfunc IsValid(b []byte) bool {\n\tvalid := true\n\tj := len(b) - 1\n\tfor i := 0; i < len(b)/2; i++ {\n\t\tif b[i] != b[j] {\n\t\t\tvalid = false\n\t\t}\n\t\tj--\n\t}\n\treturn valid\n}\n"
  },
  {
    "path": "Valid Parentheses/kata.go",
    "content": "package kata\n\nfunc isValid(s string) bool {\n\tstack := make([]rune, 0)\n\n\tif len(s)%2 == 1 {\n\t\treturn false\n\t}\n\n\tvar openChar rune\n\tfor _, char := range s {\n\t\tif char == '(' || char == '{' || char == '[' {\n\t\t\tstack = append(stack, char)\n\t\t\tcontinue\n\t\t}\n\n\t\topenChar = rune(1)\n\t\tif len(stack)-1 > -1 {\n\t\t\topenChar = stack[len(stack)-1]\n\t\t\tstack = stack[:len(stack)-1]\n\t\t}\n\n\t\tif char == '}' && openChar != '{' || char == ')' && openChar != '(' || char == ']' && openChar != '[' {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif len(stack) > 0 {\n\t\treturn false\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "Validate Binary Search Tree/kata.go",
    "content": "package kata\n\n/**\n * Definition for a binary tree node.\n * type TreeNode struct {\n *     Val int\n *     Left *TreeNode\n *     Right *TreeNode\n * }\n */\nfunc isValidBST(root *TreeNode) bool {\n\tlist := inorderTraversal(root)\n\tfor i := 1; i < len(list); i++ {\n\t\tif !(list[i-1] < list[i]) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc inorderTraversal(root *TreeNode) []int {\n\tlist := make([]int, 0)\n\tinorder(root, &list)\n\treturn list\n}\n\nfunc inorder(node *TreeNode, list *[]int) {\n\tif node == nil {\n\t\treturn\n\t}\n\tif node.Left != nil {\n\t\tinorder(node.Left, list)\n\t}\n\t*list = append(*list, node.Val)\n\tif node.Right != nil {\n\t\tinorder(node.Right, list)\n\t}\n}\n"
  },
  {
    "path": "Warehouse Manager/q.sql",
    "content": "SELECT\n    w.name AS warehouse_name,\n    SUM(p.Width*p.Length*p.Height*w.units) AS volume\nFROM\n    Warehouse AS w\n        INNER JOIN\n    Products AS p\n    ON p.product_id = w.product_id\nGROUP BY\n    w.name"
  },
  {
    "path": "Water Bottles/kata.go",
    "content": "package kata\n\nfunc numWaterBottles(numBottles int, numExchange int) int {\n\tmax := numBottles\n\n\tfor numExchange <= numBottles {\n\t\tnumBottles = numBottles - numExchange\n\t\tnumBottles++\n\t\tmax++\n\t}\n\n\treturn max\n}\n"
  },
  {
    "path": "Weather Type in Each Country/q.sql",
    "content": "SELECT\n   country_name,\n   CASE\n      WHEN\n         SUM(weather_state) / COUNT(*) <= 15\n      THEN\n         'Cold'\n      WHEN\n         SUM(weather_state) / COUNT(*) >= 25\n      THEN\n         'Hot'\n      ELSE\n         'Warm'\n   END AS  weather_type\nFROM\n   Countries\n   INNER JOIN\n      Weather\n      ON Weather.country_id = Countries.country_id\nWHERE\n   YEAR(day) = 2019\n   AND\n   MONTH(day) = 11\nGROUP BY country_name;"
  },
  {
    "path": "Widest Vertical Area Between Two Points Containing No Points/kata.java",
    "content": "class Solution {\n    public int maxWidthOfVerticalArea(int[][] points) {\n        Integer[] convertedPoints = new Integer[points.length];\n        for (int i = 0; i < points.length; i++) {\n             convertedPoints[i] = Integer.valueOf(points[i][0]);\n        }\n\n        Arrays.sort(convertedPoints, new Comparator<Integer>() {\n            public int compare(Integer p1, Integer p2) {\n                return p1.compareTo(p2);\n            }\n        });\n\n        var max = 0;\n        for (int i = 1; i < convertedPoints.length; i++) {\n            var d = convertedPoints[i]-convertedPoints[i-1];\n            if (d > max) {\n                max = d;\n            }\n        }\n        return max;\n    }\n}"
  },
  {
    "path": "Word Pattern/kata.go",
    "content": "package Word_Pattern\n\nfunc wordPattern(pattern string, s string) bool {\n\n\tvar k int\n\tp := pattern[k]\n\n\tpatternMapping := make(map[string]string)\n\n\tvar j int\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] == ' ' || (len(s)-1) == i {\n\t\t\tif (len(s) - 1) == i {\n\t\t\t\ti = i + 1\n\t\t\t}\n\t\t\tword, ok := patternMapping[string(p-64)]\n\t\t\tif ok {\n\t\t\t\tif s[j:i] != word {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t_, ok := patternMapping[s[j:i]]\n\t\t\t\tif ok {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tpatternMapping[string(p-64)] = s[j:i]\n\t\t\t\tpatternMapping[s[j:i]] = string(p - 64)\n\t\t\t}\n\n\t\t\tj = i + 1\n\n\t\t\tif (k + 1) < len(pattern) {\n\t\t\t\tk++\n\t\t\t\tp = pattern[k]\n\t\t\t} else {\n\t\t\t\tk++\n\t\t\t}\n\t\t}\n\t}\n\n\treturn k == len(pattern)\n}\n"
  },
  {
    "path": "XOR Operation in an Array/kata.go",
    "content": "package kata\n\nfunc xorOperation(n int, start int) int {\n\tvar k int\n\tfor i := 0; i < n; i++ {\n\t\tk ^= start + 2*i\n\t}\n\treturn k\n}\n"
  }
]