It's hard to know without data (from an ALDL cable setup), but you should definitely check to see if there's an exhaust leak, as that can make a good O2 sensor deliver the wrong readings. So can a vacuum leak, but that generally has the worst symptoms at idle. Another test is to disconnect the battery to clear the fuel trims. If that makes it run sort of OK, but it learns it way back to running bad, that's a sign you're getting bad O2 readings.
Before you do that, you should check for trouble codes. I don't know if it's still as easy as jumpering 2 terminals like on earlier trucks. It should have logged a code by now for O2 or lean.