bloggerads

2016年6月24日 星期五

UEFI : BuildOptions (Compiler Options)

用來access IO的變數若不宣告成volatile,但又怕因為最佳化而沒有實際access到IO的話,可以改Compiler Options 關掉最佳化編譯更改UEFI 的Compiler Options, 可以選擇一次改全部 modules 或只改單一個 module,在EDK2都是透過修改DSC file。

1. 更改單一個 module 的 compiler options

[Components]

PackageNamePkg/NameOneDxe/NameOneDxe.inf {
    <BuildOptions>
    MSFT:*_*_*_CC_FLAGS = /Od
}

2016年6月5日 星期日

C# : from in where let select, 資料庫語法


public class Example_of_From_In_Let_Select
{
    public static void Main(string[] args)
    {
        string names = "Mr.Adam,Mrs.Eva,Mr.Henry,MS.May";
        var array = names.Split(',');
       
        var result = (
                from name in array
                where (name.Substring(0, name.IndexOf('.')) == "Mr" )
                let new_name = name + "<Male>"
                select new_name
            );
       
        foreach(string x in result)
            Console.WriteLine(x);
    }
}

/////// Output ///////
Mr.Adam<Male>
Mr.Henry<Male>

2016年6月3日 星期五

LeetCode : 169. Majority Element

Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.
You may assume that the array is non-empty and the majority element always exist in the array.


// C++ Solution

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        if (nums.size() == 1) return nums[0];
        map <int, int> m;
        for (int i=0; i<nums.size(); i++) {
            if (m.find(nums[i]) == m.end() )
                m[nums[i]] = 1;
            else {
                m[nums[i]]++;
                if (m[nums[i]] > nums.size()/2)
                    return nums[i];
            }
        }
    }
};