,  

Count all numbers with unique digits (in decimal) in the range [1, N]

Problem: Given a range, print all numbers having unique digits.

For example:
Input : 10 20
Output : 10 12 13 14 15 16 17 18 19 20

11 does not has both digits unique.

Input : 1 10
Output : 1 2 3 4 5 6 7 8 9 10
Method 1: A simple approach one can come along is looping from 1 to N and checking each digits if it meets the required constraints i.e:
  1. Find the digits one by one and keep marking visited digits. 
  2. If all digits occurs one time only then print that number. 
  3. Else ignore it
class InterviewDesk
{
  /* method to print numbers with unique digits */
  static void printUnique(int n)
  {
      /* traversing all numbers */
      for (int i = 1; i <= n; i++)
      {
          int num = i;
          boolean visited[] = new boolean[10];
    
          /* find digit and maintain its count */
          while(num > 0)
          {
              /* if a digit occcurs more than 1 time, break */
              if (visited[num % 10])
                  break;
              
              /* mark digit as visited */
              visited[num%10] = true;
    
              num = num/10;
          }
    
          /* print if number has unique digits */
          if (num == 0)
              System.out.print(i + " ");
      }
  }
     
  /* driver method */
  public static void main(String args[])
  {
      int n = 20;
      printUnique(n);
  }
}
Output:
1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20