Contents Menu Expand Light mode Dark mode Auto light/dark mode
Leetcode Solutions
Leetcode Solutions
  • 0kth-largest-element-in-an-array
  • 0top-k-frequent-elements
  • 1-two-sum
  • 10-regular-expression-matching
  • 100-same-tree
  • 1009-complement-of-base-10-integer
  • 101-symmetric-tree
  • 1011-capacity-to-ship-packages-within-d-days
  • 102-binary-tree-level-order-traversal
  • 1022-sum-of-root-to-leaf-binary-numbers
  • 104-maximum-depth-of-binary-tree
  • 1041-robot-bounded-in-circle
  • 1046-last-stone-weight
  • 1047-remove-all-adjacent-duplicates-in-string
  • 1048-longest-string-chain
  • 105-construct-binary-tree-from-preorder-and-inorder-traversal
  • 1074-number-of-submatrices-that-sum-to-target
  • 108-convert-sorted-array-to-binary-search-tree
  • 1091-shortest-path-in-binary-matrix
  • 1094-car-pooling
  • 11-container-with-most-water
  • 1115-print-foobar-alternately
  • 114-flatten-binary-tree-to-linked-list
  • 116-populating-next-right-pointers-in-each-node
  • 117-populating-next-right-pointers-in-each-node-ii
  • 118-pascals-triangle
  • 1192-critical-connections-in-a-network
  • 1195-fizz-buzz-multithreaded
  • 12-integer-to-roman
  • 120-triangle
  • 1202-smallest-string-with-swaps
  • 1209-remove-all-adjacent-duplicates-in-string-ii
  • 121-best-time-to-buy-and-sell-stock
  • 1220-count-vowels-permutation
  • 123-best-time-to-buy-and-sell-stock-iii
  • 124-binary-tree-maximum-path-sum
  • 1268-search-suggestions-system
  • 127-word-ladder
  • 128-longest-consecutive-sequence
  • 1291-sequential-digits
  • 1302-deepest-leaves-sum
  • 1305-all-elements-in-two-binary-search-trees
  • 131-palindrome-partitioning
  • 1310-xor-queries-of-a-subarray
  • 132-palindrome-partitioning-ii
  • 1332-remove-palindromic-subsequences
  • 134-gas-station
  • 1342-number-of-steps-to-reduce-a-number-to-zero
  • 1345-jump-game-iv
  • 135-candy
  • 1354-construct-target-array-with-multiple-sums
  • 1379-find-a-corresponding-node-of-a-binary-tree-in-a-clone-of-that-tree
  • 138-copy-list-with-random-pointer
  • 1396-design-underground-system
  • 140-word-break-ii
  • 142-linked-list-cycle-ii
  • 1423-maximum-points-you-can-obtain-from-cards
  • 143-reorder-list
  • 146-lru-cache
  • 1461-check-if-a-string-contains-all-binary-codes-of-size-k
  • 1463-cherry-pickup-ii
  • 1465-maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts
  • 1472-design-browser-history
  • 1480-running-sum-of-1d-array
  • 1491-average-salary-excluding-the-minimum-and-maximum-salary
  • 15-3sum
  • 150-evaluate-reverse-polish-notation
  • 1510-stone-game-iv
  • 152-maximum-product-subarray
  • 1523-count-odd-numbers-in-an-interval-range
  • 155-min-stack
  • 1584-min-cost-to-connect-all-points
  • 1592-rearrange-spaces-between-words
  • 1598-crawler-log-folder
  • 160-intersection-of-two-linked-lists
  • 1631-path-with-minimum-effort
  • 1641-count-sorted-vowel-strings
  • 1642-furthest-building-you-can-reach
  • 1647-minimum-deletions-to-make-character-frequencies-unique
  • 167-two-sum-ii-input-array-is-sorted
  • 1672-richest-customer-wealth
  • 1679-max-number-of-k-sum-pairs
  • 1689-partitioning-into-minimum-number-of-deci-binary-numbers
  • 1695-maximum-erasure-value
  • 1696-jump-game-vi
  • 17-letter-combinations-of-a-phone-number
  • 1710-maximum-units-on-a-truck
  • 1711-count-good-meals
  • 172-factorial-trailing-zeroes
  • 1720-decode-xored-array
  • 1721-swapping-nodes-in-a-linked-list
  • 173-binary-search-tree-iterator
  • 179-largest-number
  • 18-4sum
  • 1863-sum-of-all-subset-xor-totals
  • 189-rotate-array
  • 191-number-of-1-bits
  • 1929-concatenation-of-array
  • 199-binary-tree-right-side-view
  • 2-add-two-numbers
  • 20-valid-parentheses
  • 206-reverse-linked-list
  • 21-merge-two-sorted-lists
  • 211-design-add-and-search-words-data-structure
  • 212-word-search-ii
  • 2138-divide-a-string-into-groups-of-size-k
  • 215-kth-largest-element-in-an-array
  • 216-combination-sum-iii
  • 224-basic-calculator
  • 225-implement-stack-using-queues
  • 226-invert-binary-tree
  • 2279-maximum-bags-with-full-capacity-of-rocks
  • 23-merge-k-sorted-lists
  • 230-kth-smallest-element-in-a-bst
  • 232-implement-queue-using-stacks
  • 234-palindrome-linked-list
  • 235-lowest-common-ancestor-of-a-binary-search-tree
  • 236-lowest-common-ancestor-of-a-binary-tree
  • 239-sliding-window-maximum
  • 240-search-a-2d-matrix-ii
  • 242-valid-anagram
  • 258-add-digits
  • 26-remove-duplicates-from-sorted-array
  • 268-missing-number
  • 284-peeking-iterator
  • 287-find-the-duplicate-number
  • 289-game-of-life
  • 29-divide-two-integers
  • 290-word-pattern
  • 295-find-median-from-data-stream
  • 297-serialize-and-deserialize-binary-tree
  • 3-longest-substring-without-repeating-characters
  • 300-longest-increasing-subsequence
  • 303-range-sum-query-immutable
  • 304-range-sum-query-2d-immutable
  • 307-range-sum-query-mutable
  • 31-next-permutation
  • 315-count-of-smaller-numbers-after-self
  • 3174-3292-414-third-maximum-number
  • 318-maximum-product-of-word-lengths
  • 32-longest-valid-parentheses
  • 322-coin-change
  • 329-longest-increasing-path-in-a-matrix
  • 338-counting-bits
  • 34-find-first-and-last-position-of-element-in-sorted-array
  • 341-flatten-nested-list-iterator
  • 344-reverse-string
  • 347-top-k-frequent-elements
  • 354-russian-doll-envelopes
  • 355-design-twitter
  • 376-wiggle-subsequence
  • 382-linked-list-random-node
  • 388-longest-absolute-file-path
  • 389-find-the-difference
  • 39-combination-sum
  • 399-evaluate-division
  • 4-median-of-two-sorted-arrays
  • 406-queue-reconstruction-by-height
  • 41-first-missing-positive
  • 410-split-array-largest-sum
  • 412-fizz-buzz
  • 416-partition-equal-subset-sum
  • 421-maximum-xor-of-two-numbers-in-an-array
  • 429-n-ary-tree-level-order-traversal
  • 438-find-all-anagrams-in-a-string
  • 45-jump-game-ii
  • 452-minimum-number-of-arrows-to-burst-balloons
  • 454-4sum-ii
  • 456-132-pattern
  • 46-permutations
  • 460-lfu-cache
  • 462-minimum-moves-to-equal-array-elements-ii
  • 463-island-perimeter
  • 47-permutations-ii
  • 473-matchsticks-to-square
  • 474-ones-and-zeroes
  • 494-target-sum
  • 4sum-ii
  • 5-longest-palindromic-substring
  • 509-fibonacci-number
  • 51-n-queens
  • 52-n-queens-ii
  • 520-detect-capital
  • 525-contiguous-array
  • 53-maximum-subarray
  • 532-k-diff-pairs-in-an-array
  • 535-encode-and-decode-tinyurl
  • 538-convert-bst-to-greater-tree
  • 543-diameter-of-binary-tree
  • 560-subarray-sum-equals-k
  • 567-permutation-in-string
  • 575-distribute-candies
  • 576-out-of-boundary-paths
  • 581-shortest-unsorted-continuous-subarray
  • 583-delete-operation-for-two-strings
  • 59-spiral-matrix-ii
  • 60-permutation-sequence
  • 60133-2155-1-two-sum
  • 605-can-place-flowers
  • 63-unique-paths-ii
  • 630-course-schedule-iii
  • 64-minimum-path-sum
  • 647-palindromic-substrings
  • 653-two-sum-iv-input-is-a-bst
  • 658-find-k-closest-elements
  • 661-image-smoother
  • 665-non-decreasing-array
  • 668-kth-smallest-number-in-multiplication-table
  • 669-trim-a-binary-search-tree
  • 67-add-binary
  • 68-text-justification
  • 680-valid-palindrome-ii
  • 682-baseball-game
  • 69-sqrtx
  • 692-top-k-frequent-words
  • 695-max-area-of-island
  • 697-degree-of-an-array
  • 7-reverse-integer
  • 700-search-in-a-binary-search-tree
  • 701-insert-into-a-binary-search-tree
  • 703-kth-largest-element-in-a-stream
  • 705-design-hashset
  • 706-design-hashmap
  • 707-design-linked-list
  • 719-find-k-th-smallest-pair-distance
  • 720-longest-word-in-dictionary
  • 733-flood-fill
  • 743-network-delay-time
  • 745-prefix-and-suffix-search
  • 746-min-cost-climbing-stairs
  • 78-subsets
  • 785-is-graph-bipartite
  • 792-number-of-matching-subsequences
  • 8-string-to-integer-atoi
  • 80-remove-duplicates-from-sorted-array-ii
  • 820-short-encoding-of-words
  • 823-binary-trees-with-factors
  • 84-largest-rectangle-in-histogram
  • 844-backspace-string-compare
  • 849-maximize-distance-to-closest-person
  • 86-partition-list
  • 863-all-nodes-distance-k-in-binary-tree
  • 867-transpose-matrix
  • 875-koko-eating-bananas
  • 88-merge-sorted-array
  • 890-find-and-replace-pattern
  • 897-increasing-order-search-tree
  • 9-palindrome-number
  • 905-sort-array-by-parity
  • 907-sum-of-subarray-minimums
  • 91-decode-ways
  • 916-word-subsets
  • 92-reverse-linked-list-ii
  • 923-3sum-with-multiplicity
  • 93-restore-ip-addresses
  • 941-valid-mountain-array
  • 95-unique-binary-search-trees-ii
  • 968-binary-tree-cameras
  • 97-interleaving-string
  • 979-distribute-coins-in-binary-tree
  • 98-validate-binary-search-tree
  • 981-time-based-key-value-store
  • 99-recover-binary-search-tree
  • 992-subarrays-with-k-different-integers
  • 994-rotting-oranges
  • basic-calculator-ii
  • burst-balloons
  • consecutive-characters
  • course-schedule-ii
  • decode-string
  • distinct-subsequences
  • fibonacci-number
  • find-all-numbers-disappeared-in-an-array
  • find-the-town-judge
  • height-checker
  • insertion-sort-list
  • k-closest-points-to-origin
  • maximal-square
  • maximum-depth-of-n-ary-tree
  • maximum-difference-between-node-and-ancestor
  • maximum-gap
  • merge-intervals
  • middle-of-the-linked-list
  • minimum-absolute-difference
  • minimum-height-trees
  • nth-magical-number
  • number-complement
  • numbers-at-most-n-given-digit-set
  • pairs-of-songs-with-total-durations-divisible-by-60
  • partition-equal-subset-sum
  • partition-to-k-equal-sum-subsets
  • path-sum
  • path-sum-ii
  • path-sum-iii
  • perfect-squares
  • populating-next-right-pointers-in-each-node
  • power-of-two
  • query-kth-smallest-trimmed-number
  • range-sum-of-bst
  • reorder-list
  • reverse-linked-list
  • reverse-words-in-a-string
  • serialize-and-deserialize-binary-tree
  • smallest-integer-divisible-by-k
  • sort-an-array
  • sort-colors
  • squares-of-a-sorted-array
  • third-maximum-number
  • two-sum
  • zigzag-conversion

1115-print-foobar-alternately¶

Try it on leetcode

Description¶

Suppose you are given the following code:

class FooBar {
  public void foo() {
    for (int i = 0; i < n; i++) {
      print("foo");
    }
  }

  public void bar() {
    for (int i = 0; i < n; i++) {
      print("bar");
    }
  }
}

The same instance of FooBar will be passed to two different threads:

  • thread A will call foo(), while
  • thread B will call bar().

Modify the given program to output "foobar" n times.

 

Example 1:

Input: n = 1
Output: "foobar"
Explanation: There are two threads being fired asynchronously. One of them calls foo(), while the other calls bar().
"foobar" is being output 1 time.

Example 2:

Input: n = 2
Output: "foobarfoobar"
Explanation: "foobar" is being output 2 times.

 

Constraints:

  • 1 <= n <= 1000

Solution(Python)¶

from threading import Barrier


class FooBar:
    def __init__(self, n):
        self.n = n
        self.barrier = Barrier(2)

    def foo(self, printFoo):
        for i in range(self.n):
            printFoo()
            self.barrier.wait()

    def bar(self, printBar):
        for i in range(self.n):
            self.barrier.wait()
            printBar()
Next
114-flatten-binary-tree-to-linked-list
Previous
11-container-with-most-water
Copyright © 2022, Prakash Sellathurai | Created using Sphinx and @pradyunsg's Furo theme. | Show Source
Contents
  • 1115-print-foobar-alternately
    • Description
    • Solution(Python)