using System; using System.Collections.Generic; class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return int整型 */ public int NumberOf1 (int n) { // write code here int nFlag = n >= 0 ? 1 : -1; n = n * nFlag; int[] nArr = new int[32]; Array.ForEach(nArr, r => r = 0); int nIndex = 0; while (n > 0) { nArr[nIndex] = n % 2; n = n / 2; nIndex++; } if (nFlag == -1) { int nC = 1; //nArr[31] = 1;//符号位 for (int nIndexSec = 0; nIndexSec < 32; nIndexSec++) { int nTmp = nC + (nArr[nIndexSec] == 1 ? 0 : 1); nC = nTmp / 2; nArr[nIndexSec] = nTmp % 2; } nArr[31] = 1; //nArr[31] = (nC + nArr[31]) % 2; } return Array.FindAll(nArr, r => r == 1)?.Length ?? 0; } }