I use blow code during the contest but I got TLE. All difference between AC code is second loop. Anyone can help me to solve this?

My TLE code:

```
Set<Integer> squares = new HashSet<>();
for (int i = 0; i * i <= c; i++) {
squares.add(i * i);
}
for (int num : squares) {
if (squares.contains(c - num)) return true;
}
return false;
```

AC Code:

```
HashSet<Integer> hs = new HashSet<>();
for (int i=0; i<=Math.sqrt(c); i++) {
hs.add(i * i);
}
for (int i=0; i<=Math.sqrt(c); i++){
if (hs.contains(c - (i*i)))
return true;
}
return false;
```