Knicks forward Carmelo Anthony shoots over Trail Blazers guard Damian...

Knicks forward Carmelo Anthony shoots over Trail Blazers guard Damian Lillard in Portland, Ore. on Dec. 12, 2015. Credit: AP / Steve Dykes

PORTLAND, Ore. — Carmelo Anthony may not be the kind of leader his critics want him to be, but he did everything he could to lead the Knicks to victory Saturday night.

Anthony matched his season high with 37 points and hit six clutch free throws in the last 29.5 seconds to help the Knicks seal a 112-110 win over the Trail Blazers in the finale of their three-game road trip.

It was only the second time this season that Anthony reached 30 points, and the timing couldn’t have been better. The Knicks (11-14) had dropped four straight games and eight of their previous 10. They also got nothing from rookie Kristaps Porzingis, who was scoreless for the first time in his career and didn’t play in the fourth quarter.

The Knicks had to erase a 10-point lead at the start of the fourth to pull out a victory that Anthony called “a must-win” before delivering a star performance. He shot 13-for-21 from the field and hit all nine of his free throws.

“I had to do whatever I can to win this basketball game,” he said. “That rhythm came at the right time for me. It was a must-win for us, a must-win for me from the standpoint of just going out there and doing it all and making sure we came out of here with a win.”

At the morning shootaround, Anthony answered his critics, namely TNT’s Charles Barkley, who said he’s “got to be a better leader.” Surprisingly, Anthony said he has never met Barkley. He added that he’s tired of trying to live up to what everyone thinks he should be.

“The problem is everybody’s always trying to compare you to the next person, to the next man,’’ he said. “That’s what kind of irks me, gets on my nerves more than anything.

“How can you tell somebody that they’re not a leader? You’re not around me. I never even met you before. You know nothing about me other than what you’re seeing out there on the basketball court, just the couple of minutes of the game that you watch.”

The game ended in wild fashion after Anthony made two free throws with 7.1 seconds left to put the Knicks up by four. They appeared to be in good shape, but Lance Thomas, one of the Knicks’ smarter players and best defenders, fouled Damian Lillard as he attempted a three-pointer with 2.2 seconds to go.

“I shouldn’t have jumped,” Thomas said. “It was a bonehead play.”

Lillard made the first two and missed the third on purpose. The rebound was tipped out and somehow found its way back to Lillard. He had a shot at a game-winning three-pointer but missed as time expired.

“That was the longest 2.2 seconds I’ve ever been a part of,” Anthony said.

“I really didn’t want to look up at the basket when the ball left his hands,” Derek Fisher said. “It would have been extremely deflating to lose a game that way. The ball bounces your way sometimes, and it bounced our way tonight.”

Arron Afflalo scored 15 points. Robin Lopez had 14 points and seven rebounds, including a critical stick-back with 2:09 to go. Kyle O’Quinn and Thomas were big off the bench with 14 and 13 points, respectively. Porzingis was 0-for-6.

Lillard led Portland with 29 points. C.J. McCollum had 22.

The Knicks fell behind by double-digits for the fifth straight game and were down 86-76 at the start of the fourth quarter. Fisher hoped the group that started the quarter could keep the game close while Anthony rested.

The Knicks hit two three-pointers to open the fourth and eventually took the lead, 91-90, on Derrick Williams’ three-pointer with 8:03 left. It was 93-92 when Anthony returned with 6:37 to go, and the Knicks continued to push the pace.

“The guys showed a lot of mental toughness to start the fourth quarter,” Fisher said.

O’Quinn dunked in transition after a block and Langston Galloway scored a fast-break layup to give the Knicks a 99-94 lead with 5:40 remaining. They went up 102-96 when Anthony fed Afflalo for a corner three-pointer with 4:29 left.

With the Knicks up 104-100, Lopez came up with a huge offensive rebound in traffic and put it back up to extend to six again. But back-to-back jumpers by Al-Farouq Aminu and Lillard cut it to 106-104 with 1:30 to go.

It stayed that way until Anthony finally got the call he was looking for from the officials. He complained at the start of the trip about not getting enough whistles, and the NBA then admitted the officials missed a foul on Rajon Rondo as Anthony attempted a three-pointer on the final possession of Thursday night’s two-point loss.

This time Anthony barreled into Mason Plumlee going to the basket and drew the foul with 29.5 seconds left. He sank both free throws to put the Knicks up 108-104.

After Lillard’s layup made it a two-point game, Plumlee fouled Anthony again. He hit both to give the Knicks a 110-106 lead with 19.2 seconds remaining.

“We could have very easily packed up and say we’ll get them next time and feel sorry for ourselves,” Fisher said. “But they decided they wanted to win the game, and that’s what they did.”