LeBron James scored a season-high 42 points and grabbed 11 rebounds as the Cavaliers dropped the NBA's best Warriors for their 18th win in 20 games.