Brown, a 6'5" guard from Roswell, Georgia, played for NC State from 2010 to 2013. He started all three seasons and led the Wolfpack to consecutive NCAA tournament appearances in 2012 and 2013. As a junior, Brown averaged 12.4 points and 4.3 rebounds per game and led the Atlantic Coast Conference in assists with 7.2 per game. At the close of the season, Brown was named second team All-ACC. During his college career Brown averaged 11.6 points, 4.2 rebounds, 5.8 assists and 32.6 minutes per game. After the 2012–13 season, Brown decided to forgo his final season of college eligibility and declared for the 2013 NBA draft.
Professional career
2013–14 season
Brown was selected with the 52nd overall pick in the 2013 NBA draft by the Minnesota Timberwolves and subsequently joined the team for the 2013 NBA Summer League. On September 26, 2013, he signed his first professional contract with the Timberwolves. However, he was waived by Timberwolves on October 25, 2013. On November 1, 2013, he was acquired by the Springfield Armor. On November 20, 2013, he signed with the Philadelphia 76ers. He made his debut that same day, scoring 5 points with 58 seconds left in the 4th quarter. During his rookie season, he had multiple assignments with the Delaware 87ers. On March 14, 2014, he was waived by the 76ers. On March 16, 2014, he was re-acquired by the Springfield Armor.
2014–15 season
On July 29, 2014, he signed with Reyer Venezia of Italy for the 2014–15 season. On September 5, 2014, his contract was voided by Venezia after he failed physicals. On September 25, 2014, he signed with the Detroit Pistons. However, he was later waived by the Pistons on October 20, 2014. On November 1, 2014, he was acquired by the Grand Rapids Drive. On November 15, he made his debut for the Drive in a 112–103 loss to the Bakersfield Jam, recording 14 points, six rebounds and five assists in 33 minutes. On February 4, 2015, he was named to the Futures All-Star team for the 2015 NBA D-League All-Star Game. On January 28, 2015, he signed a 10-day contract with the Minnesota Timberwolves. Three days later, in just his third game for the Timberwolves, he was thrown into the starting line-up due to being the only healthy point guard on the team as Mo Williams and Zach LaVine were both out injured. He was forced to play all but five seconds of their 90-106 loss to the Cleveland Cavaliers as he recorded 9 assists, 6 rebounds and 1 point. He moved back to the bench the following game on February 2 with the return of Ricky Rubio from long-term injury. His playing time drastically decreased as he managed just 1:29 minutes of action in the 94-100 loss to the Dallas Mavericks. On February 6, he signed a second 10-day contract with the Timberwolves. On February 19, 2015, he signed with the Timberwolves for the rest of the season. On October 24, 2015, he was waived by the Timberwolves.
2015–16 season
On November 12, 2015, Brown was reacquired by the Grand Rapids Drive. Two days later, he made his season debut in a 113–101 win over the Delaware 87ers, recording 13 points, two rebounds, two assists and three steals in 23 minutes off the bench. On January 8, 2016, Brown signed a 10-day contract with the Phoenix Suns. He made his debut for the Suns four days later, recording 7 points, 5 assists, 2 rebounds and 1 steal in a 116–97 loss to the Indiana Pacers. On January 18, he signed a second 10-day contract with the Suns. After his contract expired, the Suns decided to not retain him, making him a free agent. On January 29, he was named in the East All-Star team for the 2016 NBA D-League All-Star Game, earning his second straight All-Star nod. On February 2, he was reacquired by the Grand Rapids Drive. On March 18, 2016, Brown signed a 10-day contract with the Detroit Pistons. He later signed a second 10-day contract with the Pistons on March 28, and then for the rest of the season on April 13. Brown was waived by the Pistons on October 22, 2016 before playing in a game for them.
Brown joined the Detroit Pistons for the 2017 NBA Summer League. He ultimately signed a two-way contract with the Toronto Raptors. Under the terms of the deal, split time between the Raptors and their G League affiliate, the Raptors 905. He also became the first player who previously had NBA experience to sign a two-way contract with an NBA team. He won the NBA G League Most Valuable Player Award for the season with Raptors 905. Prior to the close of the season, Brown's contract was upgraded to a standard deal.
2018–19 season
On July 20, 2018, the Raptors re-signed Brown. In 26 games for the team during the 2018-19 season, Brown averaged 2.1 points per game in 8.2 minutes per game. On January 7, 2019, the Raptors waived Brown. On February 10, 2019, Guangzhou Long-Lions of the Chinese Basketball Association was reported to have signed Brown. Brown made his debut for the Long-Lions two days later, scoring 17 points with 2 rebounds and a steal in a 97–93 victory over the Beijing Ducks.