 Is this grammatically correct? “Martin heard footsteps rushing towards his office.”
 “Quintessential Example”
 “at” or “in” the same visit?
 What is the difference between 'which' and 'that'?
 What is a word that could imply both “surplus” or “deficit”?
 A laser with/of frequency 25THz? On/in the excited state?
 What term describes pretending outrage to escape a conversation?
 How to add emotion to your conversation?
 Correct comma usage in a list with groups
 How to buy Bitcoin or Ethereum using ATM card?
 Making money through CFD
 How can I find an investment that provides jobs and increased wages for the poor?
 Can I mitigate all risks with a Stop Market
 Trying to lower my credit card APR; how to know what I should ask for?
 How to get Loan for more then 1 CashFlow Apartament?
 Why does TeXShop need 4GB of RAM?
 Remove the space break between chapters
 font collision in Beamer when using kmath and kerkis together with siunitx, bm, and stmaryrd
 I can't use \beta instead of β in xetex
 Wrongly calculated (or displayed) xcoordinate in tikz
Find perfect squares in range
I've just taken the codility test on finding perfect squares in a range. I thought it was pretty straightforward, but on submitting, I got that a 50% on correctness and 66% on performance.
The spec also mentioned that range will be between [2147483648 ... 2147483647], expected worstcase time complexity is O(sqrt(abs(B))) and expected worstcase space complexity is O(1).
This is my code:
Solution1.java
public class Solution1 {
public int solution(int A, int B) {
int upperLimit = (int) Math.sqrt(B);
int squares = 0;
for (int i = 1; i <= upperLimit; i++) {
if (i * i >= A && i * i <= B) {
squares++;
}
}
return squares;
}
}
Solution1Test.java
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class Solution1Test {
private final Solution1 solution1 = new Solution1();
@Test
public void given4_17_return3() {
assertEquals(3, solution1.so

The only reasons I can think of that your code was deemed incorrect are that it doesn't consider 0 as a perfect square, and that you don't consider the possibility that B < A (although maybe the test defined B as being greater than or equal to A and this is not a negligence of you). As for the performance, here are some suggestions:
You don't need to check i * i <= B in the loop, because the termination condition of the for loop already required that i <= upperLimit, and with i being positive, there is no way that i*i > B if i <= sqrt(B).
Taking the above into account, it follows that once the loop reaches an i for which i * i >= A, there is no point in continuing the loop, because all future values of i will have squares that fall within the specified range.
Continuing this trail of thought, it turns out that the solution can simply be expressed as (int) (Math.floor(Math.sqrt(B))  Math.ceil(Math.sqrt(Math.max(A, 0)))) + 1, provided B is nonnegative and B >= A. This expression
20180423 02:03:30