枚举1到n具有kth位设置的所有数字的最佳方法是什么?
例如:
何时n = 12和k = 1,答案将是1, 3, 5, 7, 9, 11.
如果k = 2,回答将是2, 3, 6, 7, 10, 11.
一个简单的方法是循环n并检查是否kth设置了位(通过检查num & (1 << (k-1))是1或0)但有没有更好的方法来做到这一点?
我在leetcode中解决了一个问题
给定包含n + 1个整数的数组nums,其中每个整数在1和n之间(包括1和n),证明必须存在至少一个重复的数字.假设只有一个重复的数字,在O(n)时间和O(1)空间复杂度中找到重复的数字
class Solution(object):
def findDuplicate(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
xor=0
for num in nums:
newx=xor^(2**num)
if newx<xor:
return num
else:
xor=newx
Run Code Online (Sandbox Code Playgroud)
我接受了解决方案,但我被告知它既不是O(1)空间也不是O(n)时间.
谁能帮助我理解为什么?
我使用odbc适配器和数据集连接并从IBM的I Series AS400数据库接收数据.
我有一个odbc连接,如下所示:
OdbcCommand cmd = new OdbcCommand(queryString, conn); // Set Active Query
OdbcDataAdapter rt = new OdbcDataAdapter(queryString, conn); // Active Data Transfer
DataSet ds = new DataSet(); // Create DataSet
rt.SelectCommand.CommandTimeout = 180; // Set Command Timeout
rt.Fill(ds); // Transfer All Data
var reader = ds.CreateDataReader(); // Create Reader
reader.Read(); // Read
while (reader.Read()) { ... }
Run Code Online (Sandbox Code Playgroud)
它奇怪地给了System.OutOfMemoryException网上rt.Fill(ds);
如果有10亿行,包含130列会导致此错误吗?
如何避免此错误并收到我想要的数据?
我想用ant执行build.xml文件.但是我在识别ant和Java的路径方面遇到了麻烦.我尝试将位置更改为bashrc中的正确位置,并尝试使用以下命令将其更改为当前命令窗口:
export path=/usr/local/apache-ant/bin:"$PATH"
echo 'export path=/usr/local/apache-ant/bin:"$PATH"' >> ~/.profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin:"$PATH"
Run Code Online (Sandbox Code Playgroud)
同样回显JAVA_HOME的配置文件但是当我检查这些路径时,它们没有改变.我错过了什么吗?
echo $path
/usr/local/apache-ant/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
echo $JAVA_HOME
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助