With monitoring turned on for the table you can read which partitions/subpartitions have changed from the user_tab_modifications view and base the partition list on that, or alternatively use the gather stale option of DBMS_STATS to do that for you.

If you have queries that do not use partition pruning then you'll want to keep your global stats reasonably surrent also